gpt4 book ai didi

javascript - 在 IE8 中调用从 iFrame 写入父级的父级函数

转载 作者:行者123 更新时间:2023-12-03 10:58:01 26 4
gpt4 key购买 nike

我在 IE8 中遇到问题。我有一个 iframe,如下所示。

<!doctype html>
<html lang="en">
<head>
</head>

<body>
<script id="myscript">
function foo() { alert('foo'); }
</script>


(function () {
var pdoc = parent.document;
var dest = pdoc.head;
var text = document.getElementById("myscript").textContent;

var pscr = pdoc.createElement("script");
pscr.textContent = text;
dest.appendChild(pscr);

parent.foo();
})();
</body>
</html>

iframe 将脚本复制到父级并在父级上运行函数 foo

这在我需要的所有浏览器上都运行得很好,除了 IE 8。(这不是跨域问题)

我收到“对象不支持此属性或方法

最佳答案

旧版 IE 没有 textContent。它有 innerText,但对于 script 元素,您可以使用 text

另外,IE8 上不会自动提供 document.head;请改用 document.getElementsByTagName('head')[0]

通过这两项更改,这适用于 IE8、IE11、当前的 Chrome 和当前的 Firefox:

(function () {
var pdoc = parent.document;
var dest = pdoc.getElementsByTagName('head')[0];
var script = document.getElementById("myscript");
var prop = 'textContent' in script ? 'textContent' : 'text';
var text = script[prop];

var pscr = pdoc.createElement("script");
pscr[prop] = text;
dest.appendChild(pscr);
parent.foo();
})();
<小时/>

当然,只有当您需要新的 foo 函数来关闭另一个窗口的全局上下文时,通过文本执行此操作才有用。但想必这就是您想要做的......

关于javascript - 在 IE8 中调用从 iFrame 写入父级的父级函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com