После привязки к контенту на другой странице, которая не создается до тех пор, пока DOM не будет готов - PullRequest
1 голос
/ 05 марта 2010

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

Page 1

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

Page 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#section-A", но содержимое, на которое ссылается якорь, не генерируется до тех пор, пока не загрузится DOM, что слишком поздно, учитывая, что сначала загружается URL.* Если проблема не ясна, дайте мне знать, и я постараюсь уточнить, но если у кого-то есть какие-либо первоначальные мысли о том, как получить сценарий, подобный этому, работающий, пожалуйста, дайте мне знать.

1 Ответ

1 голос
/ 05 марта 2010

На второй странице код в вашем "готовом" обработчике может проверить местоположение страницы.Если в локации есть что-то вроде '#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';
});

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

edit OK, вот тестовая страница: http://gutfullofbeer.net/hash1.html

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

...