2015-05-31 55 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