我有我工作的知识库。我正在尝试在 iFrame 实例中获取带有脚本设置的完整 html。
下面是我的设置的 Chrome 扩展。当我单击 中的按钮时div/iframe
,出现Uncaught ReferenceError: test is not defined
错误。
想法?
我有我工作的知识库。我正在尝试在 iFrame 实例中获取带有脚本设置的完整 html。
下面是我的设置的 Chrome 扩展。当我单击 中的按钮时div/iframe
,出现Uncaught ReferenceError: test is not defined
错误。
想法?
每个链接:函数不是文档的属性,而是窗口的属性。尝试
parent.foo();
或
top.foo();
<button onclick='parent.test();'>test</button>
现在可以使用...也top.test()
可以使用,但是,我想要一种使其正常化的方法。它不是很直观。
有没有办法不必前缀top.
or parent.
?
<head>
确保在您的部分中的任何其他脚本之前调用 jQuery 库。
大多数时候我得到这个错误,我只是改变了页面上调用脚本的顺序(总是在 jQuery 下),它解决了这个问题。
这是一个迟到的答案,但我会分享我的解决方案。
我需要一个 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 充当独立页面。