Как получить список загруженных скриптов, в том числе динамически загружаемых - PullRequest
2 голосов
/ 14 ноября 2011

Я пытаюсь сопоставить определенный скрипт с загруженными в данный момент скриптами на странице:

if($('script[src="' + sn + '"]').length == 0)
  $('head').append('<scr' + 'ipt src="' + sn +'"></scr' + 'ipt>');  

Это работает, но только для скриптов, которые были загружены нормально.

Для сценариев, которые были внедрены с использованием javascript, таких как сценарий в моем состоянии, он не работает: (

Очевидно, что скрипты, которые загружаются таким образом, почему-то невидимы в DOM, даже если они запускаются.

Ответы [ 3 ]

4 голосов
/ 14 ноября 2011
var isThere = false;
$("script").each(function() {
    if ($(this).attr("src") == sn) {
        isThere = true;  
        // this works also with injected scripts!!
    }
});
if (isThere === false) {
    $('head').append('<scr' + 'ipt src="' + sn +'"></scr' + 'ipt>');
}
2 голосов
/ 14 ноября 2011

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

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

1 голос
/ 14 ноября 2011

Почему бы вам не проверить наличие чего-либо в вашем скрипте (например, имя глобальной переменной, глобальный объект или имя функции).

if (!window.functionName) {
    // script holding functionName must not be present so load it dynamically
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...