Могу ли я вызвать один файл JS из другого. - PullRequest
5 голосов
/ 09 января 2010

У меня есть приложение asp.net mvc, и я пытаюсь переместить весь свой javascript в файлы js. сейчас у меня есть файл с именем sharedfunctions.js, который используется повсеместно.

Проблема в том, что если я переместил некоторый код в файл js, который вызывает метод в файле sharedfunctions.js, он больше не работает.

каков наилучший способ выделить общий код среди файлов js и позволить им реально работать должным образом?

Ответы [ 5 ]

5 голосов
/ 09 января 2010

Пока все файлы .js упоминаются в запросе страницы, функции / переменные во всех них будут доступны любым другим после загрузки страницы .

Я выделяю этот последний бит, потому что он вполне может быть основной причиной ваших проблем. Возможно, порядок загрузки файлов .js неправильный.

Если у вас есть некоторый javascript, который выполняется немедленно (например, он не запускается событием страницы), то он вполне может начать выполняться до того, как ваш файл sharedfunctions.js будет включен на страницу. В этом случае функция в sharedfunctions.js буквально не будет существовать во время выполнения другого javascript.

Посмотрите, можете ли вы взглянуть на порядок вещей, чтобы устранить эти проблемы. Например, попробуйте и убедитесь, что файл sharedfunctions.js загружается в качестве первого файла сценария на странице.

ИМХО, это предпочтительнее, чем пытаться взломать ваши существующие js-файлы, чтобы напрямую загрузить содержимое других js-файлов.

1 голос
/ 09 января 2010

Считаете ли вы, что вы перезаписываете свои функции фиктивными? Если это так до того, как вы определили функцию, вы можете проверить, определена ли она у вас.

if (typeof yourFunctionName == 'function')

0 голосов
/ 09 января 2010

Некоторые библиотечные решения

Додзё: dojo.require("my.package.name");

JQuery: $.getScript("url/to/script.js", function() { /* callback */ });

0 голосов
/ 09 января 2010

Лучший способ - хранить все это в одном файле, и в вашей среде разработки, где он разбит на файлы для каждого класса или какой бы метод вы ни использовали, просто включите их в правильном порядке.

Если вы хотите включить JS динамически (используя ярлыки moo-tools, хотя вы можете просто использовать их библиотеку ресурсов)

$$('head')[0].adopt(new Element('script',{'type':'text/javascript','src':'path to js file'}));
0 голосов
/ 09 января 2010

Используйте этот шаблон:

function IncludeJavaScript(jsFile)
{
  document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...