Как я могу выполнить script после вызова window.location.href?
У меня есть script, который перенаправляет пользователя на другую страницу. Я хочу загрузить некоторый контент в div на новой странице после полной загрузки новой страницы. Как я могу это сделать. Не работает.
function goToPage() {
window.location.href = 'http://www.mypage.com/info;
$('.my_class').load('my/url/path/with/content/to/load');
}
Недавно загруженная страница (http://www.mypage.com/info) содержит следующий div:
<div class="my_class"></div>
Что я делаю неправильно?
Ответы
Ответ 1
Перенаправьте на новую страницу, но добавьте хеш-сигнал к URL.
function goToPage() {
window.location.href = 'http://www.mypage.com/info#load-stuff;
}
Затем при загрузке целевой страницы оцените проверку URL для этого хеш-сигнала.
function pageLoad() {
if (window.location.hash === "#load-stuff") {
$('.my_class').load('my/url/path/with/content/to/load');
}
}
Если ваше приложение использует jQuery, оно будет выглядеть примерно так:
$(function () {
if (window.location.hash === "#load-stuff") {
$('.my_class').load('my/url/path/with/content/to/load');
}
});
Это грубая идея по крайней мере.
Ответ 2
Как указано в других ответах, вы не сможете выполнять какие-либо инструкции script с вашего исходного сайта. Вместо использования PHP для создания контента статически вы также можете использовать фрагменты HTML в качестве аргументов, например. например:
// in the original page:
function goToPage() {
window.location.href = 'http://www.mypage.com/info#my/url/path/with/content/to/load';
}
// in http://www.mypage.com/info:
$( document ).ready(function () {
if(window.location.hash)
$('.my_class').load(window.location.hash.substring(1));
}
Ответ 3
Вы должны просто запустить
$('.my_class').load('my/url/path/with/content/to/load');
на этой странице: http://www.mypage.com/info.
Когда вы выполняете window.location.href = 'http://www.mypage.com/info';
, вы перенаправляетесь на другую страницу. Ничто после этой линии не произойдет. Вы должны вместо этого запустить код после этой строки на загруженной странице.
Ответ 4
Простым способом передачи данных на вашу страницу, на которую вы перенаправляете, будет установка некоторых параметров URL.
Например:
window.location.href - "http://youpage.com/?key=value"
Когда эта страница загружается, вы можете иметь:
$(document).ready(function(){
var my_param = getUrlParameter('key');
if(my_param == "value"){
//do your stuff here
}
});
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
Ответ 5
Вы можете сделать это несколькими способами. Попробуйте использовать API localstorage и передайте информацию или контент с помощью пары имени и значения (или нескольких из них) и распакуйте ее на принимающей стороне.
На странице, на которую вы перенаправляетесь, проверьте ключ localstorage, а затем загрузите его содержимое (вышеупомянутое имя и пары значений) в div.
В качестве альтернативы вы можете написать один script файл, который можно развернуть на несколько страниц; выполните проверку на window.location.href и условно загрузите script соответственно. Если вы находитесь на перенаправленной странице, вы можете запустить любой script, который вам нравится. Приятная роль в этом заключается в том, что вы все еще работаете с одним JS файлом - вам не нужно фрагментировать ваш код (предполагая, конечно, что страницы, с которыми вы работаете, находятся на одном сайте).
Вам не нужно ничего делать с php, если вы этого не хотите, или хешей... есть несколько отличных инструментов, которые будут делать трюк, если вы сможете использовать HTML5 и связанные с ним API.
Ответ 6
window.location = '#/MyPage';
setTimeout(function() {
//MyCode To Run After PageLoad
});
Ответ 7
Вы перенаправляете браузер с помощью window.location.href
, и я боюсь, поскольку вы просто меняете местоположение браузера, вы не можете влиять на ввод/ввод на странице, на которую вы переходите (если вы не используете параметры строки запроса а затем создайте контент с чем-то вроде PHP (myurl.php? newcontent = whatever))
Ответ 8
После перенаправления вы больше не сможете выполнять скрипты на этой странице, так как страница выгружается.
Попробуйте это,
страница перенаправления:
function goToPage() {
window.location.href = 'http://www.mypage.com/info;
}
mypage.com/info:
JS:
$('.my_class').load('my/url/path/with/content/to/load');
HTML:
<div class="my_class"></div>
Я надеюсь, что это помогло вам, и дайте мне знать, если вам нужна дополнительная помощь!