有没有办法将iframe的javascript代码注入父窗口?

时间:2015-04-26 04:37:04

标签: javascript html iframe javascript-injection

有没有办法使用javascript将iframe中的javascript注入其父窗口? iframe和父级都在同一个域中。

由于其他原因,我在检测到iframe中的更改后,无法简单地从父窗口执行操作。

示例:

<div id="bar"> Hello World </div>
<iframe srcdoc="
    <html>
        <body>
            <script type="text/javascript">
                // change "bar"'s style or alter its content
            </script>
        </body>
    </html>
"></iframe>

2 个答案:

答案 0 :(得分:2)

您需要做的就是使用iframe中的全局parent变量,直接使用window.parentparent

实施例

<div id="bar"> Hello World </div>
<iframe srcdoc="<html>
    <body>
        <script>
            window.parent.document.getElementById('bar').style.background = 'red';
        </script>
    </body>
</html>"></iframe>

只要iframe满足Same-Origin Policy,这就行了。

答案 1 :(得分:0)

是的,只要他们在同一个域名上。在堆栈溢出see this thread之前已经问过这个问题。

简而言之(来自链接线程)

document.getElementById('someDiv').innerHTML = 
  top.document.getElementById('otherIframe').contentWindow.
  document.getElementById('someOtherDiv').innerHTML;