Перенаправить на определенную страницу, затем выполнить событие или действие - PullRequest
0 голосов
/ 29 мая 2019

У меня есть кнопка с событием onlick, которое при запуске должно перенаправить на определенную страницу и добавить класс к определенному элементу.

Используя код:

window.location.href = "http://localhost:8000/dashboard";

$('p').addClass('active');,

Мне удалось перенаправить его, но событие не было выполнено. Это даже возможно, потому что он обновляет DOM после перенаправления. Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Нормальный поток выполнения JavaScript прерывается при выполнении полностраничной навигации. Это означает, что JavaScript на первой странице не сможет изменить DOM на второй, так как первая страница не дольше выполняется браузером после навигации.

Есть несколько способов обойти это на практике, хотя я не уверен, выходят ли они за рамки того, что вы могли бы рассмотреть. Старый способ сделать это - использовать тег IFRAME для загрузки вашего контента и выполнения всех ваших сценариев из внешнего контекста. Если все страницы находятся в одном домене, внешняя страница может добраться до кадра и заставить их перемещаться или даже изменять их DOM.

Более современный подход заключается в выборе технологии «одностраничного приложения», такой как Angular или React . В этих языках навигация по страницам не должна перенаправлять страницу в традиционном смысле, чтобы процесс выполнения не прерывался таким же образом. Это довольно сложный подход, и, поскольку вы упомянули PHP, вы можете не найти их привлекательными.

Поскольку вы используете PHP, вы можете передавать параметры на вторую страницу, чтобы указать, что нужно внести изменения, и обрабатывать их в PHP, например, http://example.com/secondPage.php?useOtherCSS=true. Просто мысль, хотя она не будет использовать JavaScript это будет способствовать достижению вашей цели.

0 голосов
/ 29 мая 2019

Вы не сможете манипулировать элементами DOM на других страницах во время навигации, так как код после перенаправления не будет выполнен.Вместо этого прослушайте события на странице, на которую вы перенаправляете, и определите оттуда, как применить ваш active класс.

...