最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript 動(dòng)態(tài)添加事件代碼

 更新時(shí)間:2008年11月30日 16:51:56   作者:  
往往我們需要在 JS 中動(dòng)態(tài)添加事件,這就涉及到瀏覽器兼容性問題了,以下談及的幾種方法,我們也常?;旌鲜褂?。
方法一、setAttribute
var obj = document.getElementById("obj");
obj.setAttribute("onclick", "javascript:alert('測(cè)試');");
這里利用 setAttribute 指定 onclick 屬性,簡(jiǎn)單,很好理解,
但是:IE 不支持,IE 并不是不支持 setAttribute 這個(gè)函數(shù),而是不支持用 setAttribute 設(shè)置某些屬性,包括對(duì)象屬性、集合屬性、事件屬性,也就是說(shuō)用 setAttribute 設(shè)置 style、onclick、onmouseover 這些屬性在 IE 中是行不通的。
方法二、用 attachEvent 和 addEventListener
IE 支持 attachEvent
obj.attachEvent("onclick", Foo);
function Foo()
{
alert("測(cè)試");
}
也可寫在一起
obj.attachEvent("onclick", function(){alert("測(cè)試");});
其它瀏覽器支持 addEventListener
obj.addEventListener("click", Foo, false);
function Foo()
{
alert("測(cè)試");
}
同樣也可寫在一起
obj.addEventListener("click", function(){alert("測(cè)試");}, false);
注意 attachEvent 的事件帶 on,如 onclick,而 addEventListener 不帶 on,如 click。
順便說(shuō)一下 addEventListener 的第三個(gè)參數(shù)(雖然很少用) useCapture - 如果為 true,則 useCapture 指示用戶希望啟動(dòng)捕獲。啟動(dòng)捕獲后,所有指定類型的事件將在被指派到樹中其下面的任何 EventTargets 之前指派給已注冊(cè)的 EventListener。正在通過(guò)樹向上 bubbling 的事件將不觸發(fā)指定的使用捕獲的 EventListener。
綜合應(yīng)用
if (window.attachEvent)
{
//IE 的事件代碼
}
else
{
//其它瀏覽器的事件代碼
}
方法三、事件 = 函數(shù)
例:obj.onclick = Foo;
這在多個(gè)瀏覽器中均支持,這是屬于舊的規(guī)范(方法二屬于 DOM2 的規(guī)范),不過(guò)由于使用方便,用的場(chǎng)合也比較多。

下面是我的解決辦法:
function show(){
alert("Hello, world!!!");
}
obj.setAttribute('onclick',document.all ? eval(function(){show()}) : 'javascript:show()');
看起來(lái)很簡(jiǎn)單,也兼容瀏覽器,就是不知道還有沒有其他方面的影響,或者有更好的方法可以取代呢?

相關(guān)文章

最新評(píng)論

宁河县| 陆川县| 庄浪县| 比如县| 姜堰市| 浙江省| 徐州市| 叙永县| 湾仔区| 惠安县| 贵溪市| 建德市| 江西省| 乳山市| 德化县| 中阳县| 瑞丽市| 沾益县| 汨罗市| 桦南县| 左云县| 灵丘县| 江孜县| 岱山县| 萨嘎县| 如皋市| 巴楚县| 马鞍山市| 建平县| 城口县| 祁门县| 洪雅县| 杭锦旗| 江安县| 治多县| 会昌县| 昌江| 远安县| 玉溪市| 天峻县| 安国市|