Попытка ввести js и css в iframe от родителя.Таблицы стилей и сценарии правильно добавляются в документ внутри iframe, но по какой-то причине рассматривается только css, а не то же самое для js, который не выполняется или не распознается.
Другая проблема заключается в том, что файлы, похоже, не поступают из кэша, а вместо этого запрашиваются через сеть каждый раз, когда в iframe загружается что-то, для чего требуются файлы.Этого следует избегать для повышения производительности.
Пробовал то же самое, но определял функцию для вставки файлов из документа, загруженного в iframe, с такими же результатами:
window.onload = function() {
if (parent) {
var iframeHead = document.getElementsByTagName("head")[0];
var stylesScrtips = parent.document.getElementsByClassName("toInsert");
for (var i = 0; i < stylesScrtips.length; i++)
iframeHead.appendChild(stylesScrtips[i].cloneNode(true));
}
}
Ссылка на разныеобсуждения:
Внедренный JavaScript не выполняется
Внедрение функции JavaScript в Iframe
https://www.sitepoint.com/community/t/iframe-call-js-file/210325/27
В родительском документе определена нижеследующая функция:
document.getElementById('theFrame').onload = function inject(){
var iFrameHead = window.frames["theFrame"].document.getElementsByTagName("head")[0];
var theStyle = new Array(5);
for (var i=0;i<theStyle.length;i++){
theStyle[i] = document.createElement('link');
theStyle[i].type = 'text/css';
theStyle[i].rel = 'stylesheet';
var styles = $("[rel='stylesheet']").map(function() {
return this.href;
}).toArray();
theStyle[i].href = styles[i];
iFrameHead.appendChild(theStyle[i]);
}
var theScript = new Array(6);
for (var i=0;i<theScript.length;i++){
theScript[i] = document.createElement('script');
theScript[i].type = 'text/javascript';
var scripts = $("script[src$='.js']").map(function() {
return this.src;
}).toArray();
theScript[i].src = scripts[i];
iFrameHead.appendChild(theScript[i]);
}
}
Наследуется CSS, но для файлов JS появляется ошибка "Uncaught ReferenceError: * не определено".