Функция .onscroll не работает на странице одного сообщения

У меня на сайте очень странная ошибка. Функция .onscroll отлично работает на каждой странице, но не на отдельной публикации.

Это мой код:

jQuery(document).ready(function($) {

// Fixed header
window.onscroll = function() {fixedHeader()};

var header = document.getElementById("header");
var sticky = header.offsetTop;

function fixedHeader() {
    if (window.pageYOffset > sticky) {
        header.classList.add("sticky");
    } else {
        header.classList.remove("sticky");
    }
}

});

Я проводил разные тесты в других браузерах, но, похоже, это не проблема.

Также не имеет значения, если я изменю эту строку кода:

window.onscroll = fixedHeader;

Есть у кого-нибудь идеи?

возможно, вы написали какой-то скрипт, который противоречит функции прокрутки на одной странице, отлаживайте его, удаляя один за другим в коде

charan kumar 06.07.2018 13:35

Спасибо за ответ, чаран, но проблема все еще не решена ...

user10041785 07.07.2018 09:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
126
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Похоже, из-за того, что id = "header" отсутствует на одной странице post.so, скрипт не обнаруживает идентификатор заголовка.

К сожалению, это не случай. Идентификатор также находится на отдельной странице.

user10041785 07.07.2018 09:05
Ответ принят как подходящий

Я не мог этого понять. Это может быть странная ошибка, поэтому я переписал весь код и функцию, и теперь все работает отлично. Для тех из вас, кто хочет увидеть мой новый код:

ultimateartist.stickyMenu = {

init: function() {

    var stickyElement = $( '.stick-me' );

    if ( $( stickyElement ).length ) {

        stickyClass = 'make-sticky';

        var stickyOffset = stickyElement.scrollTop();

        // Our stand-in element for stickyElement while stickyElement is off on a scroll
        if ( ! $( '#sticky-adjuster' ).length ) {
            stickyElement.before( '<div id = "sticky-adjuster"></div>' );
        }

        // Stick it on resize, scroll and load
        $( window ).on( 'resize scroll load', function(){
            var stickyOffset = $( '#sticky-adjuster' ).offset().top;
            ultimateartist.stickyMenu.stickIt( stickyElement, stickyClass, stickyOffset );
        } );

        ultimateartist.stickyMenu.stickIt( stickyElement, stickyClass, stickyOffset );

    }

},

// Stick the search form
stickIt: function ( stickyElement, stickyClass, stickyOffset ) {

    var winScroll = $( window ).scrollTop();

    if ( stickyElement.css( 'display' ) != 'none' && winScroll > stickyOffset ) {

        // If a sticky edge element exists and we've scrolled past it, hide the filter bar
        if ( ! stickyElement.hasClass( stickyClass ) ) {
            stickyElement.addClass( stickyClass );
            $( '#sticky-adjuster' ).height( stickyElement.outerHeight() ).css( 'margin-bottom', parseInt( stickyElement.css( 'marginBottom' ) ) );
        }

    // If not, remove class and sticky-adjuster properties
    } else {
        ultimateartist.stickyMenu.unstickIt();
    }

},

unstickIt: function() {
    $( '.' + stickyClass ).removeClass( stickyClass );
    $( '#sticky-adjuster' ).height( 0 ).css( 'margin-bottom', '0' );
}

Другие вопросы по теме