2009-01-08 25 views
2

我有一個分頁數據表,以及一個動態創建的分頁器(服務器端AJAX調用,將返回的HTML應用於div的innerHTML)。 當我點擊我的尋呼機上的下一頁時,會向服務器發送一個AJAX調用以檢索下一組數據,該數據以HTML字符串形式返回。我解析HTML並呈現新的表格行。我還檢索尋呼機HTML並將其加載到其父DIV innerHTML中。目前沒有問題。返回的AJAX html中斷IE事件

在Firefox中,我可以點擊尋呼機,我所有的javascript函數都會正常執行。在IE中,我的第一次點擊現在不會註冊,但第二次點擊會執行預期的操作。

什麼是關於IE,禁用第一次點擊我返回的HTML?

+0

頁面鏈接結構如何?是內聯onclick =「」還是它連接在代碼中? – 2009-01-08 17:04:28

+0

您是否驗證過第一次點擊沒有發送服務器請求?例如在小提琴手? – 2009-01-08 17:06:45

回答

1

原來我有一個競賽條件。庫(內部編碼)在我從服務器獲得響應之前調用我的回調函數。因此,我的回調函數都沒有做任何事情,因爲我沒有傳遞有效的值。我設置了一個循環來檢查每個十毫秒的值,否則等待。我修改教程從這裏開始:

http://wonko.com/post/how-to-prevent-yui-get-race-conditions

1

我不確定您的問題是否與我遇到過的回發有關,但我使用的一些AJAX庫是將額外的控件插入到頁面中,並導致我的鏈接中生成的ID爲no更長的時間匹配服務器爲回發事件預期的ID。

事件正在觸發,但是當事件被連接起來時,ID在點擊鏈接和偵聽器期望的鏈接對象之間不匹配。

但是,第一次點擊後回發會導致ID重新同步,然後第二次點擊就可以匹配ID。

我發現這種方式是通過檢查鏈接中第一次單擊之前和之後的ID。

同樣,我不確定這是發生在你身上的事情。症狀是相似的,但在我的情況下,Firefox和IE都失敗了。希望這是有幫助的。

0

您的尋呼機超鏈接是否有「#」作爲href,並且是您的JavaScript onclick事件處理程序返回false

我以前在IE中遇到過這個問題,如果你沒有從事件處理程序返回false,那麼第一次點擊將跟隨超鏈接(回到同一頁面),但隨後的點擊將工作,因爲頁面有已經被訪問過。

0

如果你有一個競爭條件,你可能要認真重新考慮你的方法,而不是設置定時器。

頁面數據是一系列格式相似的項目嗎?您可能需要考慮回到DOM級別,剪切容器的子元素並在DOM中重建它們。在我的分頁腳本中,我請求一個JSON字符串,然後由請求頁面進行分析。結果是一個對象數組,我可以循環並添加到容器中。它還有助於減少腳本注入的可能性(innerHTML在處理任何用戶提供的內容時都是非常危險的)。