Передача параметра через ссылку в подключаемый JS

137
02 апреля 2021, 09:50

Есть скрипт, который подключается к двум страницам, но выполнение должно отличаться в зависимости от страницы..
Возможно ли при подключение, в ссылке указать параметр, а после его прочитать и изменить выполнение..

Допустим:

Две страницы, page_a и page_b и js файл, по ссылке /script.js

Далее подключение выглядит так <script src="/script.js?page_a"> или ?page_b соответственно странице.

А в js файле уже условие, к примеру:

param = параметр в ссылке;
if(param === 'page_a')
  alert('Ты на странице A');
else if(param === 'page_b')
  alert('Ты на странице B');

Возможно ли такое и как реализовать? (хотя б где глянуть).

Или проще закостылить на проверке по ссылке страницы, типо через location.href?

Answer 1

Вместо тега script пришлось написать div, а то SO ругается, мол 404. Чтобы все работало в твоем случае просто поменяй div на script и не забудь изменить селектор в коде тоже. Можно также находить тег скрипта, присвоив ему id, чтоб уже наверняка не ошибиться.

let param = $("div[src^='/script.js?']").attr("src").match(/^.+?\?(.*)$/)[1]; 
 
$("body").html(param);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script> 
 
<div src="/script.js?page_a">

READ ALSO
Как доработать регулярное выражение?

Как доработать регулярное выражение?

нуждаюсь в небольшой помощи с регуляркамиУ меня есть регулярное выражение, которое осталось доделать, а сам не справлюсь

131
megatimer настройка таймера в коде

megatimer настройка таймера в коде

Есть сайт https://megatimerru/ на котором я настраиваю дату окончания таймера и сам таймер, и есть файл megatimer

112
float гораздо быстрее, чем double [закрыт]

float гораздо быстрее, чем double [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

135
Остановить перехват out и err

Остановить перехват out и err

Начинаю перехват потоков out и err в файл, но как остановить перехват после выполнения определенной команды?

141