在研究google map api的時(shí)候,遇到一個(gè)調(diào)用,
document.getElementById(‘tags_1′).click();
這個(gè)tags_1 元素是google api自己生成的,想在左邊加一個(gè)列表,
點(diǎn)擊列表和點(diǎn)擊地圖上的 tags_1 元素是一樣的。
就這樣簡(jiǎn)單一寫,測(cè)試的時(shí)候發(fā)現(xiàn)IE正常,但是 firefox是無效的。
雖然我們的運(yùn)行環(huán)境就是IE下,
但是研究一下firefox下的通用性也是很值得做的事情,
因?yàn)槲覍?duì)于firefox的喜愛要遠(yuǎn)大于 IE。
末了我就搞不明白,
為啥js代碼調(diào)用另一個(gè)元素的事件 document.getElementById(“dom”).click() 這樣一個(gè)事情,
IE下都如此簡(jiǎn)單,在FIREFOX下竟然如此的復(fù)雜。
可能是為了標(biāo)準(zhǔn)化吧,呵呵。
這是在藍(lán)色理想論壇上的解決方案
document.getElementById(“me”).onclick = function() {
var card = document.getElementById(“card”);
if(document.createEvent){
var ev = document.createEvent(‘HTMLEvents’);
ev.initEvent(‘click’, false, true);
card.dispatchEvent(ev);
}
else card.click();
}
其中 card元素是綁有事件的元素。
me元素是想通過點(diǎn)擊 me元素 來調(diào)用 card的click事件的元素。。。。
這個(gè),語文要加強(qiáng)啊,感覺自己寫個(gè)東西像唐僧一樣。。。
問題的重點(diǎn)在于 firefox 的js引擎需要 先創(chuàng)建一個(gè)事件
var ev = document.createEvent(‘HTMLEvents’);
關(guān)于 createEvent的介紹, 請(qǐng)點(diǎn)擊 http://www.php8848.com/wp/?p=1954
然后將事件指定為 click事件。
ev.initEvent(‘click’, false, true);
關(guān)于 initEvent的介紹, 請(qǐng)點(diǎn)擊 http://www.php8848.com/wp/?p=1956
最后將事件付給card元素
card.dispatchEvent(ev);
關(guān)于 dispatchEvent的介紹, 請(qǐng)點(diǎn)擊 http://www.php8848.com/wp/?p=1960
看一下實(shí)例效果 demo
http://www.php8848.com/demo/js_document_getelementbyid_dom_click.html