2013-03-17 5 views
4

Я хочу изменить между двумя страницами в html с помощью javascript, но когда я изменяюсь с window.location, код, следующий после этого предложения, продолжает выполняться.Как подождать, пока веб-страница будет загружена с помощью javascript?

Так что, когда я делаю, например, вызов getElementById(), он не распознает элемент, потому что страница по-прежнему загружается.

function myFun(){ 

    // ... 

    window.location = 'page.html'; 

    // ... wait until page.html is loaded 

} 

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

ответ

11

Когда вы

window.location = 'page.html'; 

вы заменить страницу в браузере, то один, содержащий код myFun, на новой странице. Невозможно выполнить код, следующий за этой инструкцией.

Если вы хотите, чтобы выполнить его, и только после этого страницы изменения (но я не вижу смысла), то вы можете сделать

document.onload = function(){ window.location = 'page.html'; }; 
+0

, но 'myFun' размещается в отдельном файле .js. – Monica

+0

Если он импортирован в ваш html-файл, это точно так, как если бы он был непосредственно на странице. Его выполнение прекращается, когда вы заменяете страницу. –

+0

ОК спасибо, как вы сказали мне, что это невозможно Я изменил логику программы, чтобы исправить это! :) – Monica

2

Вы можете использовать JQuery document.ready или вы можете создать пользовательскую привязку подобный this one. Если вы используете jQuery.

$(document).ready(function() { 
     window.location = 'page.html'; 
    }); 
1

Вы не можете выполнить код на своей собственной странице после выполнения window.location = 'page.html';. Ваша страница будет заменена новой страницей, а код на текущей странице больше не будет.

Единственными способами выполнить код после page.html загружается в текущее окно следующим образом:

  1. Загрузите его в IFRAME или другом окне и следить за когда IFrame или окно завершения загрузки. Таким образом, ваш текущий код остается и не заменяется.
  2. Имейте код в page.html, который отслеживает, когда он заканчивает загрузку и запускает ваше желаемое действие оттуда.
Смежные вопросы