Проблема window.location.hash в IE7 - PullRequest
6 голосов
/ 01 июня 2009

У нас есть функция javascript, которая должна «перемещать» страницу в определенную позицию с помощью якорей. Эта функция просто делает window.location.href = "#" + hashName. Это работает в FF, но не в IE. Я тестировал этот код с помощью IE7 под Windows XP. Я пробовал using window.location.href, window.location.hash, window.location.replace и все эти способы, но с использованием document объекта. Кто-нибудь знает, как бороться с этой проблемой?

Ответы [ 4 ]

6 голосов
/ 01 июня 2009

IE и большинство других браузеров будут прокручивать привязку с помощью anchor.focus () или любой элемент с идентификатором с element.scrollIntoView (true)

4 голосов
/ 01 июня 2009

Я только что проверил это в IE7 под Vista, может быть, проблема существует только в IE7 под XP? Потому что это хорошо работает для меня в IE7, Chrome и Firefox:

 window.location.hash = hashName;

Если это действительно не работает, то мы могли бы использовать scrollIntoView, как предлагает Кеннебек.

 function scrollToAnchor(anchorName){
   //set the hash so people can bookmark
   window.location.hash = anchorName;
   //scroll the anchor into view
   document.getElementsByName(anchorName)[0].scrollIntoView(true);
 }

Используйте вот так:

 <script type='text/javascript'>scrollIToAnchor('foo');</script>
 <a name='foo'></a>
 <p>I will be scrolled into view</p>
2 голосов
/ 01 июня 2009

Вы пытались изменить только location.hash?

window.location.hash = "#" + hashName;
0 голосов
/ 19 августа 2010

Есть также проблема, с которой я столкнулся

http://artur.ejsmont.org/blog/content/window-location-hash-difference-in-ff3-and-opera

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