После привязки к контенту на другой странице, которая не создается до тех пор, пока DOM не будет готов

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

Страница 1

<html>
    <a href="page-2.html#section-A">Link to section A</a>
</html>

Страница 2

<html>
    <script>        
        // Assume jQuery
        $(document).ready(function(){
            $('#wrapper').append($('<a name="section-A">Here is Section A</a><p>Some more content here.</p>'));
        });
    </script>
    <div id="wrapper"></div>
</html>

Проблема заключается в том, что когда вы нажимаете на ссылку на странице 1, которая URL-адрес, скажем " http://www.mydomain.com/page-2.html", но содержание, на которое ссылается якорь to не генерируется до тех пор, пока не загрузится DOM, что слишком поздно, учитывая, что URL загружается первым.

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

1 ответ

На второй странице код в вашем "готовом" обработчике может проверить местоположение страницы. Если в местоположении есть что-то вроде "#wrapper", тогда ваш javascript может сбросить местоположение.

$(document).ready(function(){
  $('#wrapper').append($('<a name="section-A">Here is Section A</a><p>Some more content here.</p>'));
  if (document.location.hash === '#wrapper')
    document.location.hash = '#wrapper';
});

Я попробую это, чтобы увидеть, работает ли это на самом деле.:-)

редактировать ОК, вот тестовая страница: http://gutfullofbeer.net/hash1.html

Есть две ссылки: одна содержит хеш (в моем случае это "#hello"), а вторая - нет. Когда вы нажмете на второй, вы увидите, что вы видите раздел "Привет" в нижней части страницы. Когда вы нажимаете на первую страницу, вы переходите на ту же страницу, но раздел "привет" не будет виден (если окно вашего браузера действительно не гигантское).

Другие вопросы по тегам