2010-03-05 5 views
1

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

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

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

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

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

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