![](/img/trans.png)
[英]js/jquery - How to change existing iframe attribute from inside the 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或框架来访问或修改整个域中的内容。
如果它是静态页面,请自己托管,如果它是动态页面,并且可以获取页面的代理副本,则可以使用以下几种方法:
好吧,很难说不知道您想做什么,也许网站的所有者可以做些什么,或者例如,如果您只想在网站上为您的用户添加提示,以使他们安装在网站上执行的用户脚本,网站可能是一个更好的方法,不知道为什么需要这样做以及情况如何,很难说。
由于安全限制,您的JS代码无法从iframe访问DOM元素(iframe元素位于不同的域中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.