2012-09-14 173 views
2

該腳本在FF和IE中非常完美,但不適用於Chrome。有人可以幫助醫生找到問題嗎?Chrome爲什麼不運行這個Javascript?

如果statmenst似乎沒有運行時,他們應該,他們什麼時候應該。

var top = 285; 
var bottom = 650; 

var pageheight, maxscroll; 


window.onload = function(){ 

    pageheight = document.body.offsetHeight; 

    maxscroll = pageheight - (bottom+40); 

} 

    window.onscroll = function(){ 

     var element = document.getElementById("guide-menu"); 

     if(window.pageYOffset < top){ 

      element.style.position = "absolute"; 
      element.style.top = "300px"; 

     } 

     if(window.pageYOffset > top){ 

      element.style.top = "10px"; 
      element.style.position = "fixed"; 
      element.style.marginTop = "0px"; 

     } 

     if(window.pageYOffset > maxscroll){ 

      element.style.position = "absolute"; 

      element.style.marginTop = (pageheight - bottom - 40) + "px"; 

     } 

} 
+0

什麼是top top和maxscroll的值? –

+0

這不是標準屬性,[MDN](https://developer.mozilla.org/en-US/docs/DOM/window.scrollY)可能會有所幫助。 – RobG

回答

2

「top」在chrome中有不同的含義。只要嘗試重命名頂部變量。

+0

謝謝Prcela,解決了這個問題! – user1671375

2

「top」變量返回最上面的瀏覽器窗口。 Chrome是唯一不支持覆蓋此變量的主要瀏覽器。

將您的變量重命名爲「myTop」之類的東西完美無缺。

此代碼運行良好。

var myTop = 285; 
    var bottom = 650; 

    var pageheight, maxscroll; 


    window.onload = function(){ 
     pageheight = document.body.offsetHeight; 
     maxscroll  = pageheight - (bottom+40); 

     window.onscroll = function() 
     { 
      var element = document.getElementById("guide-menu"); 
      if(window.pageYOffset < myTop) 
      { 
       element.style.position = "absolute"; 
       element.style.top = "300px"; 
      } 

      if(window.pageYOffset > myTop) 
      { 
       element.style.top = "10px"; 
       element.style.position = "fixed"; 
       element.style.marginTop = "0px"; 
      } 

      if(window.pageYOffset > maxscroll) 
      { 
       element.style.position = "absolute"; 
       element.style.marginTop = (pageheight - bottom - 40) + "px"; 
      } 
     } 
    } 

順便說一下,檢查您是否爲IF語句提供了正確的條件。如果你想要一個與網頁一起滾動的菜單,那麼你必須先交換兩個條件。

+0

Chrome有一件壞事... imo ...你不能覆蓋所有的值...設置'var top = 123;'什麼都不做!!?還有一個bug被添加到Chrome的列表中。 – Pebbl

+0

這已經在這裏討論http://stackoverflow.com/questions/11063644/redefine-reference-to-topmost-window-window-top – Kryz

+0

啊 - 感謝您的鏈接 - 它隻影響'var top;'當它是在全局範圍內設置......所以不會那麼糟糕......無論如何,將代碼封裝在匿名函數中是一種很好的做法,所以這通常不會成爲問題。 – Pebbl

相關問題