我有以下代碼適用於Chrome和MS Edge,但不適用於Firefox。Firefox沒有觸發動態嵌套iframe的onload
Parent.html有這個腳本。
<html>
<body>
<script>
var ifr1 = document.createElement('iframe');
ifr1.onload = function() {
alert("iframe 1 loaded") //fires on all browsers
script = ifr1.contentWindow.document.createElement('script');
script.src = 'PATH/TO/script.js';
script.onload = function() {
alert("script 1 onload") //fires on all browsers
};
ifr1.contentWindow.document.body.appendChild(script);
};
document.body.appendChild(ifr1);
</script>
</body>
</html>
它創建一個iframe並在該iframe中加載script.js。
這裏的script.js它做同樣的事情像上面 -
var ifr2 = document.createElement('iframe');
ifr2.onload = function() {
alert("iframe 2 loaded") //doesn't fire on Firefox
script = ifr2.contentWindow.document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js';
script.onload = function() {
alert("script 2 onload")
};
ifr2.contentWindow.document.body.appendChild(script);
};
document.body.appendChild(ifr2);
它創建由Parent.html創建的iframe ifr1
內另一IFRAME ifr2
。
現在,Chrome和Edge會正常顯示所有警報,但Firefox不會觸發在ifr1
(即使IE觸發ifr2
的onload)中加載的ifr2
的onload事件。任何想法爲什麼?
devtools控制檯上的任何消息? –
沒有螢火蟲。 –