Есть ли в Javascript аналог переменной __FILE__ в PHP?
Довольно просто, у меня есть JS-скрипт, который включен на многих сайтах и нуждается в передаче параметров.
Было бы полезно, если бы они могли быть переданы через URL, например:
<script type="text/javascript"
src="http://path.to/script.js?var1=something&var2=somethingelse"></script>
Да, вы по-прежнему можете предварительно заполнять переменные в отдельном теге сценария, но это смутный вид и его легче обойти:
<script type="text/javascript">var1=something; var2=somethingelse</script>
<script type="text/javascript" src="http://path.to/script.js"></script>
4 ответа
error.fileName
сообщит вам файл, из которого создан скрипт (не уверен, работает ли он в каждом браузере; я проверял его в Firefox & Opera)
var filename = (new Error).fileName;
Ага. Дополнительный бонус: я конвертирую параметры строки запроса в более удобный хэш javascript.
HTML:
<script src="script.js?var1=something&var2=somethingelse" type="text/javascript"></script>
script.js
:
var scriptSource = (function() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1].src
}());
var params = parseQueryString(scriptSource.split('?')[1]);
params.var1; // 'something'
params.var2; // 'somethingelse'
// Utility function to convert "a=b&c=d" into { a:'b', c:'d' }
function parseQueryString(queryString) {
var params = {};
if (queryString) {
var keyValues = queryString.split('&');
for (var i=0; i < keyValues.length; i++) {
var pair = keyValues[i].split('=');
params[pair[0]] = pair[1];
}
}
return params;
}
Этот метод следует использовать только в том случае, если переменные будут определять, какой код JavaScript был загружен (например, при обработке запроса PHP, динамическом построении файла JS).
Если вы хотите передать информацию в код JavaScript, используйте функции или переменные в коде после его загрузки.
Чтобы сделать что-то подобное, вам нужно использовать язык на стороне сервера, чтобы сделать JS для вас.
Я бы не рекомендовал это.