2011-01-18 2 views
1

Я хотел бы сделать что-то вроде этого (по аналогии с ):Как реализовать `использование` в javascript?

using("content/jquery.js"); 

$("div").fadeOut(); 

Так что, если content/jquery.js не на script в head я хотел бы, чтобы загрузить его и продолжить выполнение после его загружает.

Возможно ли реализовать это или что-то подобное? Примечание: я мог бы иметь более 1 using

ответ

4

Это называется загрузчики скриптов.

Вы можете посмотреть на RequireJS, которая ведет себя очень похожим образ:

require(["helper/util"], function() { 
    //This function is called when scripts/helper/util.js is loaded. 
}); 

Там также LabJS и ControlJS, которые больше сосредоточены на загрузке асинхронного сценария, а не зависимости, но может быть стоят проверить вне. Также в этой категории наш собственный @ jAndy's SupplyJS.

+0

не забывайте о supplyJS: о) https://github.com/jAndreas/Supply – jAndy

1

Если вы знаете имя функции вы будете призывающей раньше времени вы можете использовать typeof, чтобы проверить их наличие:

if (typeof($) == 'function') { 
    // Code here that uses jQuery 
} else { 
    // Something else here that loads the script. 
} 

Если вы не уверены, какие функции вы будете использовать вы, вероятно, захотите получить список элементов сценария и проверить их. Что-то еще по этим направлениям:

var scripts = document.getElementsByTagName('script'); 

for (var i = 0, l = scripts.length; i < l; ++i) { 
    if (scripts[i].src == myVal) { 
    // do something here 
    } else { 
    // wait for the script to load, or just leave off the else. 
    } 
} 

Являются ли два подхода, которые я могу придумать с головы.

2

Вы можете использовать getScript:

$.getScript('test.js', function() { 
    alert('Load was performed.'); 
}); 
+0

+1 Хороший ответ, который я забыл о. Это забавно, потому что в примере OP пытается загрузить jQuery, в то время как это использует jQuery. Но у вас должен быть сценарий, который запускает все это, это зависит только от ваших потребностей. –

+0

Да, я тоже это видел, но не знал, чего он хотел. существуют [другие способы] (http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml) или [другие способы] (http://unixpapa.com/js/dyna.html) для загрузки JS-файлов динамически, но jQuery предлагает обратный вызов, поэтому, вероятно, это лучше. – vol7ron

+0

Глядя на исходный код, кажется, что 'getScript' вставляет скрипт на' head' и использует событие 'onload' на' script' для выполнения функции обратного вызова ... Интересно. – BrunoLM

Смежные вопросы