2015-05-31 24 views
0

我想通过在某个坐标上动态点击来点击iframe,其中有一个按钮。我创建了一个按钮,它可以按钮点击该按钮所在的坐标,但它不起作用。通过在特定坐标上动态点击来点击iFrame

在这个JSFiddle示例中,我有按钮单击位于bing徽标所在文档的x = 30px和y = 30px的坐标,但是当我单击该按钮时,iframe中的Bing徽标不会触发。

<div class="button">Click Here</div> 
<iframe src="https://www.bing.com/images" width="200" height="70"></iframe> 



<script> 
      function clicktransfer(x, y) { 
       jQuery(document.elementFromPoint(x, y)).click(); 
      } 

      $(".gray").click(function() { 
      clicktransfer(30, 30); 
      }); 
</script> 

Click here for JSFiddle

有什么想法?

+0

也有类似的问题:[如何检测iframe中的点击(跨域)?](http://stackoverflow.com/questions/29337304/how-to-detect-a-click-inside-of- an-iframe-cross-domain-aka-prevent-click-frau) – Roberto

+0

请解释我做错了什么,我读了这个(跨域)的帖子,但它没有帮助。 – Ogdila

回答

0

您的脚本已经访问到主文档。 iframe中的文档是具有自己的DOM结构的单独文档。 你可以这样访问:

var doc = $('iframe')[0].contentWindow.document; 

但是通过跨域限制。换句话说,您不能访问具有不同来源的iframe中的文档。

+0

有没有解决方法?不要访问其他文档,但至少要改变点击方式,以使其影响到它背后的任何内容,iframe或任何其他文件... – Ogdila

+0

您可以在您的Web服务器端放置代理脚本。例如,iframe中的URL变成这样: '/proxy.php?url=https%3A%2F%2Fwww.bing.com%2Fimages'。 因此,浏览器在URL中看到相同的域,并允许访问iframe下的文档。 但是这种方法有一个缺点:外国文档中的所有相关URL都会被打破。绝对的URL不会使用你的代理。 – AJG