繁体   English   中英

JS:更改iframe链接代码内部

[英]JS: change inside iframe link tags

我正在尝试从iframe外部更改iframe中所有a标签的href属性。

这是我到目前为止的内容:

<Html>
<Head>
    <Title>change links</Title>
</Head>
<body>
    <iframe style="width:100%;height: 100%;border:0;" id="tab" src="http://www.anyside.co.il" ></iframe>
    <script type="text/javascript">
        var frame = document.getElementById("tab");   
        var tags = frame.getElementsByTagName("a");   
        for (var i = 0; i < tags.length; i++) {   
            tags[i].href = 'javascript:alert("")';  
        } 
</script>
</body>
</Html>

这段代码有什么错,它不起作用?

首先,它必须是相同的域

其次应该是:

        var frame = window.frames["tab"].document;
    var tags = frame.getElementsByTagName("a");   
    for (var i = 0; i < tags.length; i++) {   
        tags[i].href = 'javascript:alert("")';  
    } 

要么 :

var frame = document.getElementById("tab").contentDocument;   
    var tags = frame.getElementsByTagName("a");   
    for (var i = 0; i < tags.length; i++) {   
        tags[i].href = 'javascript:alert("")';  
    }

(在您的代码中,您只有iframe标记,但是您需要此标记的框架文档)

第三,您应该在加载iframe时执行代码(请参阅iframe的事件onload),或者使用setTimeout,其超时对于任何连接速度而言都足够大。

编辑:

在注释中,似乎更多的是位于不同的域上,如果是这种情况,则不能使用JavaScript或框架来访问或修改整个域中的内容。

如果它是静态页面,请自己托管,如果它是动态页面,并且可以获取页面的代理副本,则可以使用以下几种方法:

  1. 在同一台服务器上使用服务器端语言(例如php)来获取并显示该页面,然后在iframe中的同一台服务器上使用该页面(那么您将可以访问它)
  2. yql可能也是一种可以使用javascript获取网页的方法

好吧,很难说不知道您想做什么,也许网站的所有者可以做些什么,或者例如,如果您只想在网站上为您的用户添加提示,以使他们安装在网站上执行的用户脚本,网站可能是一个更好的方法,不知道为什么需要这样做以及情况如何,很难说。

由于安全限制,您的JS代码无法从iframe访问DOM元素(iframe元素位于不同的域中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM