在父窗口

时间:2017-10-18 00:10:58

标签: javascript html iframe browser

我想在父(到iframe)窗口的上下文中运行javascript。我对iframe内容有完全控制权,但不能直接在父窗口中加载脚本。

用例:父页面包含菜单项,并根据菜单选择加载iframe内容。我需要在iframe中加载一个脚本并在父窗口的上下文中执行它,这样即使我导航了iframe,它也会保持活着/持久性。相同的域名。

image

DOM脚本注入有效,但我想知道是否有更好的解决方案。

1 个答案:

答案 0 :(得分:1)

不确定此解决方案是否面临您的案例中的任何限制。尝试在iframed内容中加载JS脚本:

<script src="iframed.js"></script>

iframed.js内部:

// call function with context of parent window, and pass window and document as parameters. 
foo.call(window.parent, window.parent, window.parent.document);

function foo(window, document) {
    // now you can access all globals from the main window:
    var target = document.getElementsByTagName('iframe');
    // logs collection of iframes from the main window:
    console.log('iframes from main window:', target);
    // global context is main window
    console.log('global context: ', this);
}