Окружение страницы блокирует загрузку angularjs - PullRequest
0 голосов
/ 21 декабря 2018

Мое приложение angularjs 1.5 работает в среде MS Dynamics 365. Внутри iFrame на текущей странице.

В любом случае, похоже, что angularjs ожидает всех JS-операций от Dynamics, даже вне фрейма.(загрузка сценариев и т. д.), были завершены, и только после этого будет запущено собственное приложение.

Это вызывает много проблем с загрузкой производительности.Я понимаю, что это может быть (не уверен) в ангулярной природе ждать всех сценариев, потому что может быть что-то релевантное для его выполнения.Но если на этой странице много других не относящихся к делу скриптов, это вызывает огромные проблемы.

Есть ли способ сказать "Эй, угловатый! Ждите сценариев" jQuery.js, module1.js "и т. Д."и тогда вам разрешают загрузиться, потому что на самом деле это все, что вам нужно "?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Создайте скрипт, который загружает iframe, а затем добавьте атрибут defer в вызове:

<script src="yourscrypt.js" defer></script>

Подробнее см .: https://www.w3schools.com/tags/att_script_defer.asp

0 голосов
/ 27 декабря 2018

Просто для того, чтобы поместить нужные факты в контекст, iframes загружаются асинхронно, что означает, что сразу же после загрузки загружается ваша страница.Теперь вы можете вручную управлять поведением загрузки iframe, откладывая его загрузку в DOM, используя код Javascript, который создает iframe:

function createIframe() {
    let iframe = document.createElement("iframe");
    iframe.src = "<angularjs-app-url>";
    iframe.scrolling = "auto";
    iframe.frameborder = "0";
    iframe.width = "200px";
    iframe.height = "100px";
    document.getElementById("div-that-holds-the-iframe").appendChild(iframe);
}

Затем вы можете проверить, являются ли файлы JS: jquery.js, module1.js загружаются перед вызовом функции createIframe ():

window.onload = function() {
    if (window.jquery && module1){
        createIframe();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...