2013-07-07 15 views
0

我的網站 - http://wsareviews.comuf.com - 在firefox上完全不起作用。它在Chrome和Safari上運行得非常好,主要在IE 10上運行。顯然,它與使用事件的alignIcons方法有關。我該做什麼來使我的網站上的JavaScript代碼與Firefox一起工作

http://wsareviews.comuf.com/scripts.js

我應該使用jQuery?如果是這樣,我可以使用jQuery來獲取鼠標位置並將其放回到Javascript?順便說一句,我對jQuery一無所知。它適用於一個學校項目,我希望它可以在儘可能多的瀏覽器上工作,除了舊的IE瀏覽器。

編輯:到目前爲止我用JS獲取鼠標位置,就是這樣。我只想用一種方法來使用jQuery來獲取鼠標位置,並將其提供給我已經編寫的JavaScript代碼。如果您使用js文件和ctrl + f「函數alignIcons(e)」轉到上面的鏈接,您會發現使用鼠標位置的方法。

+0

是的,jquery將爲您處理crossbrowser問題,它能夠處理您關心的事件。 – DevZer0

+0

如果您在這裏需要幫助,您可能需要更具體。描述一個在Firefox中不起作用的特定事情(確切步驟來重現問題)併發布該功能的特定代碼。正確編寫的JavaScript可以在Firefox中工作。 – jfriend00

+0

僅供參考,我無法訪問您發佈的.js文件的鏈接。 – jfriend00

回答

1

您正試圖訪問不存在的事件對象的屬性。

您手動調用該函數兩個地,因此不會創建一個事件:

function imageLoaded() { 
    imageLoadCount++; 
    if (imageLoadCount == numberOfImagesToLoad) { 
     alignIcons(); 
     document.onmousemove = alignIcons; 
     cancelLoadingFadeIn = true; 
     setTimeout(hideSpinners, 500); 
    } 
} 

function fadeIn() { 
    document.getElementById("iconDiv").style.opacity = parseFloat(document.getElementById("iconDiv").style.opacity, 10) + 0.01; 
    if (parseFloat(document.getElementById("iconDiv").style.opacity, 10) < 1.0) { 
     setTimeout(fadeIn, 1000/60); 
    } else { 
     alignIcons(); 
    } 
} 

您應該檢查是否window.event返回任何if (!(e && e.clientX))。似乎Chrome只是半忽略它(它會引發錯誤),但繼續。

function alignIcons(e) { 
    document.getElementById("iconDiv").style.height = window.innerHeight - 15 + "px"; 
    iconWindowWidth = document.getElementById("iconDiv").offsetWidth; 
    iconWindowHeight = document.getElementById("iconDiv").offsetHeight; 

    if (!e) { 
     e = window.event; 
     if (!(e && e.clientX)) { 
      e = { 
       clientX: iconWindowWidth/2, 
       clientY: iconWindowHeight/2 
      }; 
     } 
    } 

    mouseX = e.clientX + document.body.scrollLeft; 
    mouseY = e.clientY + document.body.scrollLeft; 
    alignPopupToCentre(); 
    setXPositions(); 
    setYPositions(); 
    setOpacities(); 
} 
+0

嗨,謝謝你的回答,但'if(!(e && e.clientX))'似乎沒有改變任何東西。我試圖修復它在Firefox btw沒有鉻,這工作得很好。 –

+0

我知道,Firefox在第181行停止,它指出'e是未定義的,這是有道理的。你是否正在檢查日誌,在更改代碼時是否會引發其他錯誤? – thebreiflabb

+0

不,我得到了同樣的結果[17:59:07.824] TypeError:e未定義...第183行。我該如何處理這個錯誤?我不確定你在說我應該怎麼做。 –

相關問題