Возможно ли получить параметры запроса URL-адреса JavaScript ‹script› src?

В качестве примера у меня есть следующий html:

<body>
  <script src="code.js?q=xyz"></script>
</body>

Я хочу иметь возможность читать параметр запроса q=xyz из code.js. Я пытался:

console.log(window.location.href)

Но он дает мне URL-адрес html-документа, а не URL-адрес code.js (затем я мог бы проанализировать URL-адрес для параметров запроса).

Есть ли способ получить параметры запроса импортированного файла JavaScript из этого JavaScript? Я знаю, что могу прочитать параметры запроса на сервере, а затем отправить обратно JavaScript, в который встроены параметры запроса, но я этого не хочу. Я хочу иметь возможность размещать файлы JavaScript в CDN, которые можно настроить с помощью параметров запроса.


person at.    schedule 18.11.2016    source источник
comment
ты хочешь document.currentScript   -  person Jaromanda X    schedule 18.11.2016
comment
Прежде чем сделать это, вы должны проверить следующее: https://stackoverflow.com/questions/2190801/passing-parameters-to-javascript-files   -  person Cave Johnson    schedule 18.11.2016


Ответы (1)


Вы можете использовать document.currentScript.src для доступа к src-атрибуту <script> и затем извлечь параметр запроса. Для более старых браузеров (например, IE 11) доступ к атрибуту src осуществляется следующим образом:

var scripts = document.getElementsByTagName('script');
var src = scripts[scripts.length - 1].src;

Это вернет src-атрибут последнего выполненного скрипта. В некоторых случаях последний выполненный сценарий не является текущим сценарием (например, если сценарий манипулирует другими <script>-элементами), и поэтому он немного ненадежен.

person fzzle    schedule 18.11.2016
comment
Именно то, на что я надеялся, существовало! Спасибо. К сожалению, IE 11 не поддерживает document.currentScript: caniuse.com/#search=currentScript Обычно я бы не стал ' Мне небезразличен IE 11, но в данном конкретном случае я должен позаботиться ... Единственный найденный мной полифилл работает в IE 6-10 и явно не работает в IE 11 :( github.com/JamesMGreene/document.currentScript Есть ли обходной путь для IE 11? - person at.; 18.11.2016
comment
Есть обходной путь. Добавлю к ответу. Я думаю, что на этот вопрос был дан ответ где-то еще на SO, хотя - я не могу найти вопрос. - person fzzle; 18.11.2016
comment
Я мог бы выполнить поиск по всем тегам <script> и найти один с моим URL ... Затем получить параметры запроса. - person at.; 18.11.2016