Javascript JS: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" >&

我正在尝试从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=document.getElementById(“选项卡”);
var tags=frame.getElementsByTagName(“a”);
对于(var i=0;i
var frame=window.frames[“tab”]文档;
var tags=frame.getElementsByTagName(“a”);
对于(var i=0;i
(在代码中,您只有iframe标记,但需要该标记框架的文档)

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

编辑:

在评论中,如果您不能使用javascript或框架访问或修改跨域的内容,那么更多的是关于在不同的域上

如果它是一个静态页面,只需自己托管即可。如果它是动态的,并且可以获得页面的代理副本,您可以使用以下几种方法:

  • 在同一台服务器上使用服务器端语言(如php)获取并显示页面,然后在iframe的同一台服务器上使用此页面(这样您就可以访问它)
  • 也可能是一种方法,它可以获得一个带有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("")';  
        }