在IE中,我可以從JavaScript調用element.click() - 如何在Firefox中完成相同的任務?理想情況下,我希望有一些JavaScript可以跨瀏覽器同樣工作,但如果需要的話,我會爲此使用不同的瀏覽器JavaScript。如何以編程方式點擊JavaScript中的元素?
回答
的document.createEvent
documentation說: 「的createEvent方法已不使用event constructors代替。」
所以,你應該用這個方法來代替:
var clickEvent = new MouseEvent("click", {
"view": window,
"bubbles": true,
"cancelable": false
});
,並啓動它像一個元素此:
element.dispatchEvent(clickEvent);
如圖所示here。
element.click()是W3C DOM specification概述的標準方法。 Mozilla的Gecko/Firefox follows the standard,只允許在INPUT元素上調用此方法。
的時候,但是當我想以編程方式模擬在非輸入元素的點擊次數沒有幫助。 – Bruce 2009-04-30 21:15:06
您是否試圖按照鏈接或觸發onclick?您可以觸發一個onclick像這樣的東西:
var link = document.getElementById(linkId);
link.onclick.call(link);
這裏是一個跨瀏覽器工作的功能(可用於比單擊處理其他太):
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
對於Firefox鏈接顯示爲「特殊」。我能夠得到這個工作的唯一方法是使用createEvent described here on MDN並調用initMouseEvent函數。即使是完全沒工作,我不得不手動告訴瀏覽器打開一個鏈接...
var theEvent = document.createEvent("MouseEvent");
theEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var element = document.getElementById('link');
element.dispatchEvent(theEvent);
while (element)
{
if (element.tagName == "A" && element.href != "")
{
if (element.target == "_blank") { window.open(element.href, element.target); }
else { document.location = element.href; }
element = null;
}
else
{
element = element.parentElement;
}
}
我用KooiInc的功能上面列出,但我不得不使用兩種不同的輸入類型一個「按鈕」的IE瀏覽器還有一個針對FireFox的「提交」。我不確定爲什麼,但它的工作原理。
// HTML
<input type="button" id="btnEmailHidden" style="display:none" />
<input type="submit" id="btnEmailHidden2" style="display:none" />
//在JavaScript
var hiddenBtn = document.getElementById("btnEmailHidden");
if (hiddenBtn.fireEvent) {
hiddenBtn.fireEvent('onclick');
hiddenBtn[eType]();
}
else {
// dispatch for firefox + others
var evObj = document.createEvent('MouseEvent');
evObj.initEvent(eType, true, true);
var hiddenBtn2 = document.getElementById("btnEmailHidden2");
hiddenBtn2.dispatchEvent(evObj);
}
我有搜索和嘗試了很多建議,但是這是結束了工作。如果我還有更多的時間,我希望調查爲什麼提交與FF和按鈕與IE瀏覽器的作品,但這將是一個豪華的權利,現在到下一個問題。
- 1. 如何以編程方式點擊電子元素?
- 2. jquery以編程方式點擊新的DOM元素
- 3. 如何以編程方式在單元測試中點擊UIImageView?
- 4. 如何以編程方式「點擊」UITableView單元格?
- 5. WPF - 如何以編程方式引用樣式中的元素
- 6. 如何以編程方式訪問樣式中的元素?
- 7. 使用Javascript以編程方式點擊iframe中的鏈接
- 8. 如何以編程方式點擊asp.net中的EIT Lightbox hyperling
- 9. 如何以編程方式點擊IE中的鏈接?
- 10. 檢查HTML元素的點擊事件以編程方式或點擊鼠標點擊事件
- 11. 如何以編程方式訪問ContentTemplate中定義的元素?
- 12. 以編程方式點擊按鈕vb.net
- 13. 以編程方式點擊Android通知
- 14. 以編程方式點擊JQuery鏈接
- 15. 以編程方式點擊HTML按鈕
- 16. 以編程方式點擊按鈕 - JS
- 17. 以編程方式點擊複選框
- 18. 如何以編程方式在Android中觸發/點擊MenuItem?
- 19. Javascript點擊元素
- 20. 以編程方式使元素可見
- 21. ggplot2 - 以編程方式添加元素
- 22. javascript - 以編程方式計算元素之間的填充
- 23. 以編程方式創建一個JavaScript的SVG圖像元素
- 24. 如何以編程方式單擊ApplicationBarIconButton?
- 25. 如何以編程方式單擊QPushButton
- 26. 如何以編程方式點擊谷歌地圖的圖標
- 27. 如何以編程方式點擊Windows Phone的屏幕?
- 28. 如何以編程方式點擊TinyMCE工具欄的按鈕?
- 29. 以編程方式創建HTML列表並在點擊時顯示子元素
- 30. 如何以編程方式設置使用JavaScript的選擇框元素的值?
這個問題也回答了[這裏](http://stackoverflow.com/questions/906486/how-can-i-programmatically-invoke-an-onclick-event-from-a-anchor-tag-while-保持)。 – 2010-12-10 20:45:50
請接受[我的回答](http://stackoverflow.com/a/22469115/865175)作爲一個解決方案,因爲多個用戶也要求它。 – 2015-10-14 08:40:02