【问题标题】:Is there a way to inject javascript code from an iframe into the parent window?有没有办法将 javascript 代码从 iframe 注入父窗口?
【发布时间】:2015-07-04 14:40:08
【问题描述】:

有没有办法使用 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>

【问题讨论】:

    标签: javascript html iframe javascript-injection


    【解决方案1】:

    可以,只要它们在同一个域中。之前在堆栈溢出时已询问过此问题,see this thread

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

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

    【讨论】:

    • 您能否详细说明如何使用 iframe 从 iframe 中访问 div 最终允许您更改父窗口?
    【解决方案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,这将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 2013-02-13
      • 2020-06-08
      • 1970-01-01
      相关资源
      最近更新 更多