Как я могу выполнить 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>

Я надеюсь, что это помогло вам, и дайте мне знать, если вам нужна дополнительная помощь!