Тестовая страницаhttps://jsfiddle.net/y25rk55w/Невозможно загрузить скрипт в IFRAME
На этой тестовой странице вы можете увидеть 3 «S погруженных друг в друга. Каждый содержит тег <script>
в своем теге <head>
.
Проблема в следующем: только <script>
в начале будет загружен через браузер. Остальные два тега <script>
будут присутствовать в dom, но браузер даже не попытается их загрузить. Проблема не зависит от браузера, она может быть переделана в chrome, firefox, т.е. Проблема не может быть устранена путем добавления тайм-аутов или ожидания перед добавлением скриптов. Кажется важным, чтобы все фреймы имели программно сгенерированный контент; если вы замените эти iframes фреймами с фактическими ссылками src, проблема исчезнет.
Вопрос: Как я могу загрузить сценарий в iframes 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]);
});
});
});
Какие ошибки вы получаете в своей консоли? – putvande