如何模拟iframe中元素的“真实”鼠标单击

时间:2018-11-13 12:01:13

标签: javascript jquery

$(selector).click()导致什么都没有发生。
this answer在浏览器控制台中将javascript上下文设置为iframe,但不在主页上工作: simulateMouseClick($("iframe").contents().find(selector)) 结果:

  

未捕获的TypeError:targetNode.dispatchEvent不是函数
     在triggerMouseEvent(:5:20)
     在:8:9
     在Array.forEach()
     在SimulationMouseClick(:7:52)
     在:1:1

$("iframe").contents().find(selector).text()给了我期望的内容,因此它是正确的元素。

我该如何实现?

编辑:将其添加为人们显然无法阅读的内容:
$("iframe").contents().find(selector).click()
完全没有任何作用,因为.click()不能模拟真正的鼠标单击。

2 个答案:

答案 0 :(得分:2)

使用jQuery:

$("iframe").contents().find(selector).click();

使用Vannila JS:

使用window.frames可以访问iframe的窗口对象,如Mozilla doc

所述

您可以使用此对象在iframe中查找元素,然后在脚本中使用它们。例如:

  var iframeWindow = window.frames[0];
  var element = iframeWindow.document.getElementsByClassName("selector")[0];
  element.click();

答案 1 :(得分:0)

获取 jQuery 对象中的元素,并使用 vanillaJS .click() 方法:

$("iframe").contents().find(selector)[0].click();

就是这样。

PS:我知道这是一个老问题,但我遇到了同样的问题并以这种方式解决了:)

相关问题