1

我有我工作的知识库。我正在尝试在 iFrame 实例中获取带有脚本设置的完整 html。

下面是我的设置的 Chrome 扩展。当我单击 中的按钮时div/iframe,出现Uncaught ReferenceError: test is not defined错误。

想法?

在此处输入图像描述

4

3 回答 3

1

http://bytes.com/topic/javascript/answers/153274-script-iframe-can-not-call-functions-defined-parent-document

每个链接:函数不是文档的属性,而是窗口的属性。尝试 parent.foo();top.foo();

<button onclick='parent.test();'>test</button> 现在可以使用...top.test()可以使用,但是,我想要一种使其正常化的方法。它不是很直观。

有没有办法不必前缀top.or parent.

于 2013-04-19T20:30:16.547 回答
0

<head>确保在您的部分中的任何其他脚本之前调用 jQuery 库。

大多数时候我得到这个错误,我只是改变了页面上调用脚本的顺序(总是在 jQuery 下),它解决了这个问题。

于 2013-04-19T19:06:34.733 回答
0

这是一个迟到的答案,但我会分享我的解决方案。

我需要一个 iframe 作为预览容器。所以 parent.something 会很麻烦。

这似乎有效:

<iframe id='iframe' sandbox="allow-same-origin allow-scripts"></iframe>

并用它填充它(使用 jquery 的示例):

$(function() {

    let $iframe = $('#iframe');
    $iframe.ready(function() {

       let ifhead = `
       <meta charset="UTF-8"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"><\/script>`;
       let ifbody = `<h1>My Body</h1>`;
       let ifscript = `$(function() { $('h1').css('color', 'blue')})`;
       let html = `<html><head>${ifhead}</head><body>${ifbody}<script>${ifscript}<\/script></body></html>`; 


       document.getElementById("iframe").contentWindow.document.open();
       document.getElementById("iframe").contentWindow.document.write(html);
       document.getElementById("iframe").contentWindow.document.close();

    });

});

现在 iframe 充当独立页面。

于 2016-09-09T16:31:05.660 回答