Как приостановить выполнение JavaScript? - PullRequest
1 голос
/ 01 октября 2009

Есть ли способ приостановить выполнение JavaScript, пока в браузере не будет загружена вся страница? Я обновляю div в нижней части документа, используя AJAX, но когда я нажимаю эту ссылку до загрузки всей страницы, я получаю сообщение об ошибке ...

<%= link_to_remote 'Update', :update => 'div_at_the_bottom', :url => { :usual_stuff } %>

Ответы [ 3 ]

3 голосов
/ 01 октября 2009

Самый простой способ - сделать все на window.onload:

window.onload = function() {
  // do everything here
}

Вы также можете поместить свой javascript прямо в конец страницы, до </body>. Таким образом, любые объекты, над которыми вы работаете, гарантированно будут в DOM.

Как уже говорили другие, некоторые JS-фреймворки имеют хороший метод запуска JS при загрузке DOM. Основным преимуществом этого является то, что вы не получаете JS-эквивалент «флэш-содержимого без стиля», то есть видите элемент в одной (возможно, некрасивой) форме, а затем меняете его после полной загрузки страницы.

2 голосов
/ 01 октября 2009

Отключить сгенерированную ссылку и включить ее, когда домен загрузится:

  1. Отключить ссылку:

    <%= link_to_remote 'Update', 
            { :update => 'div_at_the_bottom', :url => { :usual_stuff } },
            { :disabled => 'disabled', :id => 'update-trigger' }
    %>
    

    (обратите внимание, что для возможности передачи этой дополнительной опции в link_to_remote необходимо сделать явный хэш [2nd] "options", обернув его фигурными скобками {}. Дополнительная справка по этому )

  2. Затем где-нибудь (где-нибудь после включения прототипа js lib) включите ссылку, когда DOM загрузится (это похоже на то, что все уже говорили делать):

    <script>
    $(document).observe('dom:loaded', function() {
        $('update-trigger').disabled = false
    })
    </script>
    

Это решение также семантически приемлемо, если это имеет значение для вас (оно имеет значение для меня).

1 голос
/ 01 октября 2009

Если вы выберете библиотеку JavaScript, такую ​​как jQuery , вы можете легко связать любой код JavaScript с событием готовности DOM и избежать подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...