Как можно получить параметр переданный в URL загружаемого на странице сценария JavaScript?

Допустим есть страница index.html на которой загружается сценарий JavaScript к примеру кодом:

<script type="text/javascript" src="script.js?param=1"></script>

Как в этом случаи им загружаемого скрипта получить значение параметра param который был передан в URL загружаемого скрипта.

P.S. Про способ получить на странице все html элементы script затем проверить их URL на предмет нужного адреса скрипта, а затем при совпадении получить параметр - я знаю.


Ответы (1 шт):

Автор решения: Spatz

Вот несколько способов передачи параметров в скрипт, но они не будут работать если скрипт загружается как модуль (type="module"), т.к. используют свойство document.currentScript:

  • используем queryString <script src="customizable.js?q=123" /></script>:
const u = new URL(document.currentScript.src)
const qs = new URLSearchParams(u.search)
console.log(qs.get("q"))
  • используем "левый" атрибут <script src="customizable.js" q="123" /></script> (не рекомендуется из-за возможных конфликтов со стандартными атрибутами):
console.log(document.currentScript.getAttribute("q"))
  • используем data-* атрибут <script src="customizable.js data-q="123"/></script> (предпочтительный способ):
console.log(document.currentScript.dataset.q)
→ Ссылка