【问题标题】:jQuery to trigger a click on an iFrame?jQuery触发点击iFrame?
【发布时间】:2013-06-04 22:59:46
【问题描述】:

如果用户单击图像,我希望它同时触发对指定 iFrame 的单击。那可能吗?图像和 iFrame 位于同一页面上。如果是这样,你能告诉我可行的代码吗?

这是我目前所拥有的:

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<img id="image" src="https://www.google.com/images/srpr/logo4w.png">

<iframe id="iframe" src="http://www.test.com" height= "100" width="160"></iframe>

<script>
jQuery("input.image").click(function(){
   $("#iframe").click()
});
</script> 

</body>
</html>

【问题讨论】:

  • 你最好自己尝试一下,如果发现问题,把代码一起解决:)
  • 好的,我刚刚用我目前得到的代码更新了我的原始问题。

标签: jquery


【解决方案1】:

您的 jquery 图像选择器错误。

改变

jQuery("input.image")

$("#image")

然后一切都会好起来的。你可以在这个fiddle看到它

发布编辑

如果问题是触发点击 iFrame 中包含的元素之一,则替换

$("#iframe").click()

类似:

$("#iframe").contents().find("a:first").click();

这只有在主页的内容和 iFrame 的页面在同一个域中时才有效。否则浏览器将阻止该操作,因为它是跨站点脚本。您可以在您的示例中看到,XSS 预防将发生,如 this fiddle

所示

【讨论】:

  • 这有点用。即使我收到“点击 iframe”的警报,但它似乎并没有真正点击 iFrame,因为实际 iFrame 中的内容,如果真的被点击,会打开另一个窗口,而这并没有发生。跨度>
  • 您的问题要求触发对 iFrame 的点击。这就是我的例子中发生的事情。我认为您有兴趣触发对作为内容驻留在 iFrame 内的元素的点击?
  • @dcarson - 是的,这是正确的;对不起,我不清楚。我需要它来单击 iFrame 内的内容。具体来说,我需要点击 iFrame 内容中的链接。这是实际 iFrame 内容的副本。你可以看到我需要它点击的链接,它是 iFrame 内容中的唯一链接。 pastebin.com/cXsuq71P
  • @dcarson - 我正在查看您在上面提到的内容位于另一个域上的最新帖子编辑。我尝试单击的 iFrame 内容中的链接是不同的域。
  • 如果是这种情况,那么所有现代浏览器都将禁止该操作。您对此无能为力。如果你打开你正在使用的浏览器的 javascript 控制台,你会看到类似:“Blocked a frame with origin "fiddle.jshell.net" from access a frame with origin "test.com". 协议、域和端口必须匹配。”另外,如果我对您有帮助,请将我的问题标记为已回答并投票。谢谢:)
【解决方案2】:

我认为你需要这样的东西:-

$("#image").click(function(){
     var $iframe = $("#iframe").contents();
     $("body", $iframe).trigger("click");
});

【讨论】:

  • 我试过这个,当我单击图像时,iFrame 没有任何反应。 iFrame 的内容也是一个图像,但是 iFrame 中的图像是一个超链接。因此,当我单击图像时,它还应该触发对 iFrame 的单击,这应该会打开一个新页面,因为 iFrame 中的图像是一个链接。
  • 请检查。我添加了新答案。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2012-08-10
相关资源
最近更新 更多