Javascript JS:iframe链接标记内部的更改
我正在尝试从iframe外部更改iframe内部所有Javascript JS:iframe链接标记内部的更改,javascript,dom,iframe,nodes,Javascript,Dom,Iframe,Nodes,我正在尝试从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" >&
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=document.getElementById(“选项卡”);
var tags=frame.getElementsByTagName(“a”);
对于(var i=0;i
这段代码有什么不对,它不能工作?首先,它必须是同一个域 第二,它应该是:
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=window.frames[“tab”]文档;
var tags=frame.getElementsByTagName(“a”);
对于(var i=0;i
或:
var frame=document.getElementById(“选项卡”).contentDocument;
var tags=frame.getElementsByTagName(“a”);
对于(var i=0;i
(在代码中,您只有iframe标记,但需要该标记框架的文档)
第三,您应该在加载iframe时执行代码(请参阅iframe的事件onload),或者使用setTimeout,其超时对于任何连接速度都足够大
编辑:
在评论中,如果您不能使用javascript或框架访问或修改跨域的内容,那么更多的是关于在不同的域上
如果它是一个静态页面,只需自己托管即可。如果它是动态的,并且可以获得页面的代理副本,您可以使用以下几种方法:
很难说不知道你想做什么,也许网站的所有者可以做点什么,或者,如果你只是想在网站上为你的用户添加提示,让他们安装一个将在网站上执行的用户脚本可能是一种更好的方式,而不知道你为什么需要这样做以及情况如何,很难说。由于安全限制,您的JS代码无法从iframe访问DOM元素(iframe元素在不同的域上)。
frame.document.getElementsByTagName(“a”)
这意味着我不能使用此代码,否则它在同一域上?搜索同一域策略以了解更多信息,我更新了关于跨域的更多答案
var frame = document.getElementById("tab").contentDocument;
var tags = frame.getElementsByTagName("a");
for (var i = 0; i < tags.length; i++) {
tags[i].href = 'javascript:alert("")';
}