Javascript window.scroll不适用于";“家”;键和#&引用;链接

Javascript window.scroll不适用于";“家”;键和#&引用;链接,javascript,jquery,Javascript,Jquery,我有一个非常简单(而且很长)的脚本,可以根据屏幕上的内容更改导航栏中的颜色。一切正常,但当按下“主页”键盘或单击“#”链接时,情况并非如此。我的剧本是这样的: function isScrolledIntoView(elem){ var docViewTop = $(window).scrollTop(); var docViewBottom = docViewTop + $(window).height(); var elemTop = $(elem).offset().top; v

我有一个非常简单(而且很长)的脚本,可以根据屏幕上的内容更改导航栏中的颜色。一切正常,但当按下“主页”键盘或单击“#”链接时,情况并非如此。我的剧本是这样的:

function isScrolledIntoView(elem){
 var docViewTop = $(window).scrollTop();
 var docViewBottom = docViewTop + $(window).height();

 var elemTop = $(elem).offset().top;
 var elemBottom = elemTop + $(elem).height();

 return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)
 && (elemBottom <= docViewBottom) &&  (elemTop >= docViewTop) );}

$(window).scroll(function () {
       isOnScreen = isScrolledIntoView("#second-div");
       isOnTopPage = isScrolledIntoView("#first-div");
       if(isOnScreen){
          $(".navbar .navbar-collapse > ul > li > a.item").mouseenter(function() {
          $(this).css("color", "black")
          });
          $(".navbar .navbar-collapse > ul > li > a.item").mouseleave(function() {
          $(this).css("color", "white")
          });          
       }
       if(isOnTopPage){
          $(".navbar .navbar-collapse > ul > li > a.item").mouseenter(function() {
          $(this).css("color", "blue")
          });
          $(".navbar .navbar-collapse > ul > li > a.item").mouseleave(function() {
          $(this).css("color", "white")
          });          
       }
});
函数是crolledintoview(elem){
var docViewTop=$(window.scrollTop();
var docViewBottom=docViewTop+$(window).height();
var elemTop=$(elem).offset().top;
var elemBottom=elemTop+$(elem).height();

return((elemBottom>=docViewTop)&&(elemTopwindow.scroll即使在#link上也会启动,或者home键,请检查注释中的JSFIDLE,可能您的isScrolledIntoView函数有问题-我没有检查,但我认为最好使用一些现成的解决方案:

如果使用引导,则可以使用

如果你不使用引导,你可以使用。或者试试谷歌scrollspy

some code for SO to post this answer with jsfiddle

这显示了主控键按下和链接点击时的滚动触发。在Chrome.Hi中进行了测试。感谢您的回答,但不知何故,我什么也看不到。任何浏览器的控制台中都没有记录任何内容,我不知道为什么。我没有使用现成的解决方案,因为有时候编辑这些解决方案需要做很多工作(我在我的示例中使用了“颜色”更改以使其简单和简短,但我在真实脚本中处理形状)。但是由于您的评论,我检查了isScrolledIntoView,我意识到问题在于div的大小。有时它不会完全“进入视图”(在Safari中,这是因为书签栏的高度较小…)。因此,我更改了脚本以检查屏幕上是否有特定元素。现在它可以工作了。因此,感谢您指出问题可能存在。