我有一个小刮刀,我需要使用JavaScript点击锚链接。我尝试了几种方法:jQuery.click()
,document.createEvent('MouseEvents')
等等。它们都有效,但是它们没有像人工点击那样完全执行(它们打开一个像他们应该但不应该的标签开始下载)。
锚标记具有以下属性:
onclick="if (document.getElementById('ReportViewer_ctl01_ctl05_ctl00').selectedIndex == 0) return false;
if (!ClientToolbarReportViewer_ctl01.HandleClientSideExport()) __doPostBack('ReportViewer$ctl01$ctl05$ctl01','');return false;"
我也试过在命令行中运行这个问题:
__doPostBack('ReportViewer$ctl01$ctl05$ctl01','')
这也有点工作但不完全像人类点击。
如果需要,我可以进一步详细说明,但目前我正在寻找一个我认为应该存在的神奇子弹。
答案 0 :(得分:4)
我保留了一个以两种编程方式保存的pastebin。当谷歌决定剥离其默认功能的窗口对象(和其他所有对象)时,它只会让我失望。>
function callClickEvent(element){
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", true, true);
element.dispatchEvent(evt);
}
function callClickEvent2(element){
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(evt);
}
callClickEvent(document.getElementById("myElement"))
callClickEvent2(document.getElementById("myElement"))
MDN文档: