2015-06-19 80 views
0

由於幾天,我有Internet Explorer 11結合dojo toolkit 1.9.4Domino Server託管的麻煩。dojo.exists失敗,IE11

源代碼:


if (dojo.exists("btnUpload")) { 
    console.log("btnUpload exist ... do something..."); 
} else { 
    console.log("btnUpload doesn't exist..."); 
} 

隨着IE11的dojo.exists()的返回值始終是

IE11調試器:


enter image description here

然而,在所有其他瀏覽器(Mozilla Firefox瀏覽器,谷歌Chrome,Apple Safari中),它的工作原理!

+1

[Works fine](http://jsbin.com/vineqo/edit),使用完全修補的IE11。 –

+0

感謝您的回答。我使用的是dojo版本1.9.4,也許這就是原因...... –

+1

不能:http://jsbin.com/vineqo它比IE或Dojo更可能是代碼中的錯誤。請記住:['select'沒有損壞](https://pragprog.com/the-pragmatic-programmer/extracts/tips)。最有可能的一些微妙的時間問題。 –

回答

4

使用dojo.exists因爲這不太合適,因爲btnUpload在技術上只是一個DOM ID,而不是全局範圍內的實際對象。在這種情況下,if (document.getElementById('btnUpload'))似乎更合適。

當遇到與實際全局變量不匹配,但與DOM ID匹配的全局引用時,瀏覽器傾向於返回DOM節點,但我不建議依賴該節點。

+0

非常感謝您的答案。我已經重寫了我的代碼。現在我正在使用'dojo.byId(「btnUpload」)'而不是'dojo.exists(「btnUpload」)'一個完美的作品。我使用'dojo.byId'而不是'document.getElementById'來實現瀏覽器的獨立性。 –