3

這可能是一個很難回答的問題,因爲很難展示問題。奇怪的IE對話框打開行爲

我正在使用datatables + datatables jEditable,但我已完全改變(和改進)的代碼,以便當用戶雙擊表中的一行時,帶有窗體的jQuery UI對話框打開,您可以編輯行。它利用一種形式來完成兩項任務,即添加&編輯。

在所有的瀏覽器中,除了你猜對它之外,這一切都很好看:IE。
我發誓,這是迄今爲止我見過的IE中最奇怪的行爲。

當您雙擊一行時,對話框不會顯示,但是當您打開開發工具(F12)時,它突然生效。

爲了澄清

  1. 用戶打開的Internet Explorer(在這種情況下,IE9,但它也發生在早期的)
  2. 用戶導航的Intranet
  3. 用戶雙擊數據錶行。什麼都沒發生。
  4. 用戶打開開發工具(F12)並關閉它
  5. 用戶雙擊數據錶行。對話框打開。
  6. 用戶關閉選項卡並重新打開並再次導航。一切正常。
  7. 用戶關閉IE瀏覽器
  8. 重複步驟1至8

這很煩人,我不能調試問題,因爲只要我打開調試消失......!

我原本以爲這個問題是因爲IE上的內網網站默認是在兼容性視圖中打開的,所以我改變了這個設置,希望它能解決問題。
它沒有。

此外,一旦開發工具打開,並且我刷新頁面,就沒有錯誤或任何錯誤代碼的跡象。

因此... 有什麼智慧?

該代碼相當複雜,我不知道我是否可以簡化它並進行演示。這是在內部網上完成的,所使用的數據是分類的,所以我不被允許/不能直接顯示你。

回答

5

這可能不是你的煩惱的原因。但我以前見過類似IE的行爲。罪魁禍首是代碼中的一個流氓console.log。在IE window.console不存在,直到開發工具已經打開,並且在開發工具關閉後在window上繼續存在。如果您的代碼中有一個零星的console.log,它可能會阻止對話框打開,因爲consoleundefined,那麼從您嘗試調試它的那一刻開始。

如果你想測試這種可能性,但不希望追捕流浪,只需添加以下到您的文檔的頂部:

if (!window.console) { 
    this.console = { 
    log: $.noop 
    }; 
} 
+0

哇,良好的通話。你是對的。我有一個單獨的'console.log',隱藏在''datatables.jeditable.js''文件中的成千上萬行代碼中,我一定已經忘記了。它在'.dialog(「open」)'調用之前,用於查看它是否觸發了正確的操作(編輯或添加)。我向你致以我的感謝,並授予你一個互聯網擁抱/握手/拳頭獎和25分。 – ShadowScripter

+1

涼爽。我強烈建議將該片段放在所有JavaScript的頂部。我在我的個人工具箱中使用它,從那以後,我可以按照我喜歡的方式留下儘可能多的控制檯日誌! – Fresheyeball