JavaScript location.hash обновляющийся в IE

Эта ситуация также может произойти, если вы используете , не поддерживаемые типами EntityFramework , например unsigned int.

Это был мой случай такой ошибки.

Оформить дополнительную информацию о поддерживаемых типах: https://msdn.microsoft.com/en-us/library/ee382832 (v = vs.100) .aspx

Существует некоторое обходное решение для таких ситуаций, объясняемое GFoley83: Как использовать unsigned int / long типы с Entity Framework?

24
задан aepheus 8 April 2010 в 18:12
поделиться

5 ответов

Похоже, это ошибка в Internet Explorer (протестировано с 7 и 8).

Изменение window.location.hash не должно приводить к перезагрузке, и распространенным методом JavaScript является использование хеша для поддержания состояния.

Если вы вручную загрузите страницу и измените хеш с помощью JavaScript, она будет работать.

Проблема в том, что когда вы перенаправлены на страницу из другого места (т. Е. Используете HTTP-заголовок «Location»), изменение хеша приведет к перезагрузке.

Чтобы обойти эту ошибку, вы можете:

1) Если вы можете контролировать перенаправление, вы можете заменить заголовок Location некоторым HTML.

<html>
<head>
    <meta http-equiv="refresh" content="0; url=__REDIRECT_LOCATION__">
    <script>window.location = "__REDIRECT_LOCATION__";</script>
</head>
</html>

2) если нет, вы можете попробовать перезагрузить страницу, когда она загружена. Чтобы предотвратить повторную загрузку, вам может потребоваться установить cookie.

window.location = window.location; // window.location.reload() didn't work.

In pseudo code: 

// if is Internet Explorer
//      if ( cookie "reloadPerformed" is not set )
//          set cookie "reloadPerformed" = "1"
//          reload page
//      else 
//          clear cookie "reloadPerformed"

Очевидным недостатком является то, что загрузка страницы приводит к двухстраничному запросу & amp; рендер, так что вы бы хотели, чтобы перезагрузка была одной из первых вещей, которую страница делает при загрузке.

17
ответ дан Jarne Cook 28 November 2019 в 23:51
поделиться

У нас была та же проблема.

В нашем случае это был http-адрес, который был перенаправлен Apache на https. Поскольку строка после знака хеша никогда не передается на сервер, она теряется.

0
ответ дан jan.vdbergh 28 November 2019 в 23:51
поделиться

Мне кажется, что если вы измените хеш, вы в основном измените местоположение страницы, и поэтому IE (или любой браузер) перезагрузится. Как вы пытаетесь это сделать? window.location.hash = "";

Может быть, Firefox достаточно умен, чтобы видеть, что вы делаете, и избегать обновления.

-5
ответ дан Ray 28 November 2019 в 23:51
поделиться

Проблема в том, что "Хэш приходит из другого места в веб-приложении через редирект. ". Если вы используете javascript для перенаправления url в клиенте вот так:

location.href = 'test1.aspx#testhash'

то все будет нормально!

Так что это ошибка IE: Когда веб-приложение работает через редирект, браузер может видеть только предыдущий url, поэтому когда вы изменяете location.hash, браузер видит изменение url, поэтому обновляет страницу.

10
ответ дан 28 November 2019 в 23:51
поделиться

Если вы используете javascript для установки хэша, не используйте "#"

window.location.hash = '#foo'; //IE will reload the page
window.location.hash = 'foo'; //IE will set the hash but will not reload the page
-3
ответ дан 28 November 2019 в 23:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: