注意的一些問題:
(一)儘量使用javascript/DOM標準
(二)標準有時也不能跨瀏覽器
1)要面對跨瀏覽器的時候經常會遇到一些ie特有的函數?
可以這樣解決:
做一個判斷把ie和firefox的javascript代碼分開寫
if (typeof window.ActiveXObject != 'undefined') { // 支持IE瀏覽器
//do some thing here
}
else if((typeof document.implementation != 'undefined')&&(typeof document.implementation.createDocument!='undefined')) { // 支持Firefox瀏覽器
//do some thing here
}
2)如果遇到 window.event時在函數中就要特別處理:
e.g.
頁面中:
- < input type="button" value="test" οnclick="javasctipt:testOnclick(event)" >
javasctipt中的代碼
- function testOnclick(evt){
- evt = evt ? evt : (window.event ? window.event : null);
- }
function testOnclick(evt){
evt = evt ? evt : (window.event ? window.event : null);
}
- //獲得點擊對象的id
- var elem = evt.srcElement ? evt.srcElement : evt.target;//這樣可以事件的元素 相當於document.getelementById("xx")拿元素一樣
- idOfInputElement=elem.getAttribute("id");//如果有id屬性的話就會拿到屬性的值
//獲得點擊對象的id
var elem = evt.srcElement ? evt.srcElement : evt.target;//這樣可以事件的元素 相當於document.getelementById("xx")拿元素一樣
idOfInputElement=elem.getAttribute("id");//如果有id屬性的話就會拿到屬性的值
3)關於Array的indexOf方法問題
Array是object對象,有些瀏覽器不支持idsArray.indexOf(..),這個方法也不是javascript標準,用循環可以拿到最正確的值
4)頁面調用框架中的方法問題
比如有個 A.html,他包含了B.html; B.html有個 test()方法,有個button,按button就觸發test方法
寫法:<input type="button" value="test" οnclick="top.B.test()"/>
如果用<input type="button" value="test" οnclick="test()"/>在firefox上會不起作用
5)window.top.BB.document.getElementById("BFrame") 和window.top.BB.BFrame的不同 BB,BFrame是frame的name的value
window.top.frames["BB"].document.getElementById("BFrame")==window.top.BB.document.getElementById("BFrame") 結果是true,他們是同一對象
window.top.frames["BB"].document.getElementById("BFrame")==window.top.BB.BFrame 結果是 false,說明他們是不同的對象
window.top.BB.BFrame 是object window
window.top.frames["BB"].document.getElementById("BFrame")和window.top.BB.document.getElementById("BFrame")是objectHTMLFrameElement
他們在刪除的時候也不一樣,
object window拿到的是window對象,要刪除兩次纔可以刪掉,有時還會報錯
objectHTMLFrameElement是頁面中的frame元素,刪一次就可以完全刪除了,注意這樣的刪除只是指向了null,而objectHTMLFrameElement元素還是存在的
(三)初始化問題
在使用對象的時候,儘可能在使用前初始化,這樣可以避免一些加載問題
(四)其他問題:
下面的代碼用於屏蔽firefox鼠標右鍵
<script type="text/javascript">
document.οncοntextmenu=function(e){return false;}
</script>
關於禁止選擇:
在IE下,禁止用戶選擇內容,用腳本可以實現:
<script>
document.onselectstart = function(){return false;}
</script>
或
<body onselectstart="return false">
在firefox,這樣子的寫法沒法實現相同的功能,不過可能用css實現:
在頁面加上
<style>
html *{-moz-user-select: none;}
</style>
例子:
<style>
html *{-moz-user-select: none;}
</style>
<body>
試試看能否選擇這些文字?
</body>
把 document.all["XX"] 改爲 document.getElementById("XX");