访问动态创建的跨域iFrame中的元素?

时间:2015-02-03 22:01:11

标签: javascript html iframe cross-domain greasemonkey

我想访问iFrame中的元素,但由于调用iFrame的方式,我没有成功。

This is the target page (www1.k9webprotection.com/...).

iframe位于不同的子域名中:

<iframe src="http://license.k9webprotection.com/..." ...></iframe>

为iframe加载时设置超时或事件监听器没有帮助。

1 个答案:

答案 0 :(得分:1)

两个文档都放在不同的(子)域上,默认情况下它们无法通过javascript进行交互。

您必须将两个文档的domain设置为相同的值。

将它放在两页的<head/>中:

<script  type="text/javascript">
document.domain='k9webprotection.com'
</script>

...然后等待iframe的onload - 事件,您应该能够从父页面访问iframe内的文档(反之亦然)。

GreaseMonkey的Sample-Script(只是覆盖iframe的主体):

// ==UserScript==
// @name        k9
// @namespace   k9
// @include     http://www1.k9webprotection.com/get-k9-web-protection-free
// @include     http://license.k9webprotection.com/license.jsp*
// @version     1
// @grant       none
// ==/UserScript==


document.domain= 'k9webprotection.com';
if(self===top){  
  try{
    $('iframe.getk9iframe').load(function(){
       $('body',this.contentDocument)
        .text('gotcha')
          .css({background:'red',fontSize:'3em'});
    });
    alert("I'm the document in the top-window");
  }
  catch(e){}
}