[英]IE8 errors when I try to call a function on the parent page from inside an iFrame
[英]Call parent function that was written to parent from iFrame in IE8
我在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
函數來關閉另一個窗口的全局上下文時,通過文本執行此操作才有用。 但這大概就是您想要做的...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.