我正在尝试使用 chrome 扩展中的 javascript 一次下载多个图像。我想通过点击每个图像来做到这一点(每个图像都包含在一个带有下载属性的 href 标记和类“clickit”)中。这个想法是使用 clickit 类循环遍历每个 href 并触发鼠标单击,从而下载图像。
以下代码仅下载 n = 25 个图像中的第一个,但被调用了 25 次(控制台日志“到达这里”多次)。
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
[].forEach.call( document.getElementsByClassName("clickit"), function(elem){
console.log("got here");
elem.dispatchEvent(evt);
});
我尝试了另一种方法,但这段代码几乎立即使 chrome 崩溃(在日志中抛出 KERN_PROTECTION_FAILURE):
for (var i = 0; i < document.getElementsByClassName("clickit").length; i++){ var clickEvent = document.createEvent("MouseEvents"); clickEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); document.getElementsByClassName("clickit")[i].dispatchEvent(clickEvent); }
在这两种情况下,我都感觉我在错误地使用 dispatchEvent() 函数,但我不能指手画脚。在第一种情况下,正确检索单个图像是令人鼓舞的。我有一种感觉,我在第二种情况下陷入了糟糕的内存访问领域。
有任何想法吗?