Yipin Sky Web Development Code Station ASP и другие классические блоги по сбору кода, связанные с веб-разработкой - ASP communication QQ group 12814238 (полный) 14725152 (открытый) Домашняя страница Реконструкция и оптимизация ASPJS/AJAX, комплексный сбор базы данных кода и обмен ею аудиовизуальная развлекательная операционная система Предыдущая статья | Следующая статья JS/AJAX
Как передать параметры в файлы JavaScript в JavaScript Автор: Ипин Дата: 23 марта 2009 г.
Размер шрифта: маленький, средний,
большой
. Это самый простой способ использования глобальных переменных, таких как Google AdSense:
программный код
<тип сценария="текст/javascript">
google_ad_client = 'pub-3741595817388494';
</скрипт>
<script type="text/javascript" src=" http://pagead2 .
googlesyndiction.com/pagead/show_ads.js"></script>
Недостатком является то, что вводятся глобальные переменные. Существует два варианта представления файлов:
программный код
// Вариант 1: использовать document.write для вывода
<тип сценария="текст/javascript">
google_ga_id = 'g6u7un8646xx';
document.write(unescape('%3Cscript type="text/javascript" src=
" http://www.google-analytics.com/ga.js"%3E%3C/script%3E' ));
</скрипт>
программный код
// Вариант 2: используйте операцию DOM для добавления в заголовок
<тип сценария="текст/javascript">
G_BEACON_ATP = 'category=&userid=&channel=112ad_id=';
document.getElementsByTagName('head')[0].appendChild(document.
createElement('script')).src='http://taobao.com/atp.js';
</скрипт>
Примечание. Приведенный выше код представляет собой виртуальный демонстрационный код, основанный на реальном приложении
. Примечание. Вариант 1 используется во многих приложениях. Ниже приведены общие методы записи.
программный код
<тип сценария="текст/javascript">
// Просто выйти напрямую:
document.write('<script type="text/javascript" src="test.js"></script>');
// Или как домашняя страница Yahoo!
document.write('<scr' + 'ipt type="text/javascript" src="test.js"></scr' + 'ipt>');
</скрипт>
2.
По сравнению с получением и анализом src элемента скрипта и всех переменных мы предпочитаем передавать параметры следующим образом:
программный код
<script type="text/javascript" src="test.js?a=b&c=d"></script>
Основная проблема заключается в том, как получить атрибут src.
Первый метод — добавить атрибут id в скрипт, получить текущий скрипт по идентификатору, а затем использовать регулярные выражения для извлечения параметров из src. Недостаток заключается в том, что в спецификации HTML 4.01 элемент SCRIPT не имеет атрибута id. Этот недостаток не является недостатком. В конце концов, лучше верить в стандарты, чем не иметь их.
Второй метод — использовать имя файла js в качестве привязки. После передачи document.getElementsByTagName('script') в коде js текущий файл js сопоставляется по обычным правилам. Этот метод очень ортодоксален, но требует уникального имени файла. Недостаток — кода много, он не дорабатывается и незначительно влияет на производительность.
Третий способ — просто добавить данные пользовательского атрибута на основе первого метода:
программный код
<script id="testScript" type="text/javascript" src="test.js" data="a=b&c=d"></script>
В файле test.js передаваемые параметры получаются с помощью следующей строки:
программный код
var scriptArgs = document.getElementById('testScript').getAttribute('data');
Четвертый метод — использовать механизм последовательного выполнения js (js-файл может загружаться синхронно или асинхронно, но при выполнении он должен выполняться в порядке потока документов). При запуске js-файла он должен быть последним среди «загруженных» js-файлов:
программный код
var скрипты = document.getElementsByTagName('script');
вар currentScript = скрипты[scripts.length - 1];
Четвертый метод более ловок и гениален, чем второй.
С точки зрения упрощения кода и производительности: Метод 3>Метод 1>Метод 4>Метод 2.
Краткое описание: Если вы заботитесь о стандартах, я рекомендую метод 4, если вы, как и я, считаете, что нет необходимости полностью соблюдать стандарты, метод; рекомендуется 3.
3. План вдохновения. Если вы, как и я, преданный поклонник Джона Резига, возможно, вы еще помните «Унижающие теги сценариев», которые широко обсуждались в августе прошлого года. Джон Резиг открыл нам дверь воображения. Для решения проблемы этой статьи также можно использовать следующие «злые способы»:
программный код
<script type="text/javascript" src="test.js">
TB.SomeApp.scriptArgs = 'a=b&c=d';
</скрипт>
В файле test.js:
программный код
ТБ = {}; ТБ.SomeApp = {};
var scripts = document.getElementsByTagName("script");
eval(scripts[scripts.length - 1].innerHTML);
При этом параметры сохраняются в переменной TB.SomeApp.scriptArgs.
Когда параметров не так много, можно сделать даже так:
программный код
<script type="text/javascript" src="test.js">a=b&c=d</script>
js-файл:
программный код
var scripts = document.getElementsByTagName("script");
var scriptArgs = скрипты[scripts.length - 1 ].innerHTML.replace(/[s]/g, '');
Воображение безгранично, вы также можете использовать onload:
программный код
<script type="text/javascript" src="test.js" xxxxx="TB.SomeFun('a=b&c=d')"></script>
Просто определите функцию в файле js:
программный код
ТБ = {};
TB.SomeFun = function(arg) { //код };
Приведенный выше код может корректно работать в браузерах, отличных от IE. Для глупости, т.е. придется добавить несколько строчек кода:
программный код
если (window.ActiveXObject) {
var скрипты = document.getElementsByTagName('script');
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
Пока мы продолжаем продвигать дух раскопок, я верю, что появятся еще более вдохновляющие решения -.-
После обобщения вышеизложенных решений, какое решение является лучшим? Мой ответ: нет лучшего, есть только самое подходящее! Потому что для разных приложений и разных концепций определение «хорошо» разное.
Например, моя текущая философия заключается в том, что не обязательно полностью соблюдать стандарты. Что касается глобальных переменных, нам нужно избегать злоупотреблений, а не использования. Поэтому я выберу решение с глобальной переменной, которое является самым простым и имеет лучшую производительность.