Внедрение JavaScripts в Iframe не выполняется (тот же домен) - PullRequest
0 голосов
/ 20 мая 2019

Попытка ввести 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: * не определено".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...