2011-07-14 175 views
2

我有幾個這樣的監聽器,它監聽點擊,然後在<div id="c50"><a hre...>CONTENT</a></div>(在這種情況下)顯示內容。一切工作在Opera,Chrome和FF中,但不在IE中。JavaScript錯誤「Function is expected」

google.maps.event.addListener(pano50, 'click', function() {  
fireEvent(document.getElementById("c50").getElementsByTagName("a")[0], 'click'); 
}) 

鉻JavaScript控制檯工具顯示點擊後此錯誤(但正常工作):

Uncaught TypeError: object is not a function 

但傳統上,IE8顯示:

Function expected on line 817 

其高於的代碼的第一行點擊後不做任何事情。感謝您的任何建議!

編輯:這裏是fireEvent功能:

function fireEvent(element, event) { 
    if (document.createEventObject){ 
     /* for IE */ 
     return element.fireEvent('on' + event, document.createEventObject()); 
    }else{ 
     /* for other browsers */ 
     var evt = document.createEvent('HTMLEvents'); 
     evt.initEvent(event, true, true); 
    } 
    return !element.dispatchEvent(evt); 
} 
+0

運行'alert(typeof google.maps.event.addListener)'的結果是什麼? – digitalbath

+0

對於遲到的迴應抱歉,我去喝啤酒。它顯示單個字:功能 – culter

+0

hmm。 'alert(typeof fireEvent)''怎麼辦? – digitalbath

回答

2

您已經有MooTools在your page上運行。 MooTools覆蓋IE的內置element.fireEvent()方法,its own normalized method適用於所有瀏覽器。 MooTools的fireEvent()版本預計「點擊」而不是「onclick」。

您可以通過簡單地改變你的fireEvent功能使用「點擊」,而不是「onclick」事件解決這個問題:

/* for IE */ 
return element.fireEvent(event, document.createEventObject()); 

但是,因爲MooTools的標準化element.fireEvent與所有瀏覽器兼容,你可以要刪除您的fireEvent函數,而是直接調用element.fireEvent()

您可能有更大的問題。您可以並排使用MooTools和jQuery,但如果您不知道自己在做什麼,可能會很快陷入困境。

+0

謝謝你gilly3,你的評論是非常翔實的。我剛剛用return元素[event]()解決了它;而不是IE/*後面的那一行。你是對的,我不知道我在用mootools和jquery做什麼。關鍵是,我不知道mootools是如何工作的,但我需要它運行bumpbox(lightbox選擇)來顯示flash文件。我計劃在其他方面使用jQuery,因爲我至少擁有最低限度的技能,而且對我來說似乎更容易處理它。讓它與其他事物一起工作是一項挑戰,尤其是Facebook評論插件。無論如何,thans! – culter

1

這是可能它的抱怨,因爲

document.getElementById("c50").getElementsByTagName("a")[0]

不是一個函數。 fireEvent函數來自哪裏?

+0

謝謝shelman,我對javascript不熟練。 fireEvent是來自某人在這裏在stackoverflow的建議。請檢查turie.eu/hlavna2,在線817上有一個map.js與該功能。大約25類似以上,但它每次只抱怨最後一個.. – culter

+0

shelman,我已編輯我的問題,並添加fireEvent功能。希望它幫你幫我:)謝謝 – culter

相關問題