gpt4 book ai didi

javascript - 无法将脚本加载到 iframe

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:18 25 4
gpt4 key购买 nike

测试页: https://jsfiddle.net/y25rk55w/

在此测试页面上,您可以看到 3 <iframe>相互嵌入。每个<iframe>包含 <script>标记在它的 <head>标签。

问题是:只有 <script>在第一个<iframe>将由浏览器加载。另外两个<script>标签将出现在 dom 中,但浏览器永远不会尝试加载它们。问题不是特定于浏览器的,它可以在 chrome、firefox 等中重新出现。该问题无法通过添加超时或在附加脚本之前等待来解决。所有 iframe 都以编程方式生成内容似乎很重要;如果将此 iframe 替换为具有实际 src 链接的 iframe,问题就会消失。

问题是:我怎样才能真正将脚本加载到 iframe 2 和 3 中?

完整测试代码:

// It doesn't matter if the scripts exist or not
// Browser won't try to load them either way
var scripts = [
'//testdomain.test/script1.js',
'//testdomain.test/script2.js',
'//testdomain.test/script3.js'
];

function createIFrame(win, onCreated) {
var iframe = win.document.createElement('iframe');
iframe.onload = function () {
onCreated(iframe);
};
win.document.body.appendChild(iframe);
}

function loadScript(win, url) {
var script = win.document.createElement('script');
script.src = url;
script.onload = function() {
console.log("Script " + url + " is loaded.");
};
win.document.getElementsByTagName('head')[0].appendChild(script);
}

createIFrame(window, function(iframe1) {
loadScript(iframe1.contentWindow, scripts[0]);
createIFrame(iframe1.contentWindow, function (iframe2) {
loadScript(iframe2.contentWindow, scripts[1]);
createIFrame(iframe2.contentWindow, function (iframe3) {
loadScript(iframe3.contentWindow, scripts[2]);
});
});
});

最佳答案

您的代码工作正常 --> http://plnkr.co/edit/vQGsyD7JxZiDlg6EZvK4?p=preview

确保在 window.onload 上执行 createIFrame或 DOMContentLoaded .

var scripts = [
'https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.js',
'https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.js',
'https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js'
];

function createIFrame(win, onCreated) {
var iframe = win.document.createElement('iframe');
iframe.onload = function () {
onCreated(iframe);
};
win.document.body.appendChild(iframe);
}

function loadScript(win, url) {
var script = win.document.createElement('script');
script.src = url;
script.onload = function() {
console.log("Script " + url + " is loaded.");
};
win.document.getElementsByTagName('head')[0].appendChild(script);
}
window.onload = function(){
createIFrame(window, function(iframe1) {
loadScript(iframe1.contentWindow, scripts[0]);
createIFrame(iframe1.contentWindow, function (iframe2) {
loadScript(iframe2.contentWindow, scripts[1]);
createIFrame(iframe2.contentWindow, function (iframe3) {
loadScript(iframe3.contentWindow, scripts[2]);
});
});
});
};

关于javascript - 无法将脚本加载到 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42159610/

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