Это что-то с javascript; или это что-то еще, что я делаю неправильно.Переменная Javascript недоступна во внешнем файле
file1.js
var collection = new Object(); collection.foo = new Array(1, 2, 3);
файл 2.js
var someClass = new Class({ bar : function() { alert(collection.foo.length); } });
index.html
<script type="text/javascript" src="file1.js"></script> <script type="text/javascript" src="file2.js"></script> <script type="text/javascript"> var x = new someClass(); x.bar(); //cannot find collection </script>
Так что я попробовал другой подход:
file1.js
collection.foo = new Array(1, 2, 3);
файл 2.js
var someClass = new Class({ bar : function() { alert(collection.foo.length); } });
index.html
<script type="text/javascript"> var collection = new Object(); </script> <script type="text/javascript" src="file1.js"></script> <script type="text/javascript" src="file2.js"></script> <script type="text/javascript"> var x = new someClass(); x.bar(); //cannot find collection.foo </script>
Я использую Mootools (где объект класса происходит от), если вы думаете, что имеет значение.
Обновление: Я упростил его для публикации примера, но x.bar() является частью события click для другого метода. Но после некоторого тестирования alert() я обнаружил, что файл1 фактически не выполняется. Фактически это файл .axd, отправляемый с текстом/javascript contenttype, поэтому я не уверен, почему - мне придется расследовать завтра.
И да, теги будут внизу. file1 - это раздражающий большой файл javascript, поэтому он отделен - цель состоит в том, чтобы кэшировать на клиенте столько, сколько возможно по-человечески. Это файл .axd, потому что он сгенерирован из базы данных (данные Ref), и я устанавливаю значения expires, compression, contenttype и cachability явно.
Обновление: После более вопиющего, я понял, что произошла ошибка в данных, сгенерированных, что firebug не ловил; и это была всего лишь ошибка, а не какая-то глубокая техническая проблема. Как таковой; закрытие.
Я попытался добавить пространство, которое также не сработало. =/ – 2008-12-11 22:55:01