проблема sIFR 3 (IE) с BlockUI и UpdatePanel - PullRequest
1 голос
/ 16 ноября 2009

У меня возникла проблема с использованием sIFR 3, jQuery BlockUI и UpdatePanel, когда страница обновляется, а шрифт SIFR исчезает.

В файле Javascript, который я использую для обработки блокировки и разблокировки пользовательского интерфейса, я обнаруживаю частичную обратную передачу и разблокирую пользовательский интерфейс:

prm.add_endRequest (function () { $ .UnblockUI (); });

Если я перезапущу sIFR.replace () в этом блоке кода, будет отображен шрифт sIFR, но символ # заменяет заголовок моей страницы (в верхней части окна / вкладки браузера). Кажется, это происходит только в IE (см. Рисунок). Каждый раз, когда я обновляю страницу с помощью LinkButton, добавляется дополнительный символ #, поэтому заголовок моей страницы выглядит как «#########». Есть идеи, почему это происходит?

Есть ли конкретная функция sIFR.update (), которую я должен запустить вместо этого? Если я выполняю sIFR.redraw () или sIFR (), я получаю ошибки во время выполнения JavaScript.

1 Ответ

1 голос
/ 17 ноября 2009

Это вызвано ошибкой в ​​IE:

Это очень специфическая ошибка в IE, когда для каждого ролика Flash на странице часть идентификатора фрагмента URI (#foo) повторяется в заголовке документа. Macromedia сообщила, что эта ошибка может быть исправлена ​​путем обновления движка VBScript, используемого браузером. Тем не менее, для тех пользователей, у которых все еще неправильный движок, sIFR предлагает обходной путь. http://wiki.novemberborn.net/sifr/Fragment+Identifier+Bug

sIFR 3 имеет обходной путь, но не срабатывает, если страница не загружена идентификатором фрагмента (window.location.hash != ""). В вашем случае я предполагаю, что страница загружается без идентификатора, затем вы добавляете его, а затем повторно запускаете замены, повторно вызывая ошибку.

Вы можете установить исправление r436, открыв (сжатую версию) sifr.js и заменив this.fix=c.ua.ieWin&&window.location.hash!="" на this.fix=c.ua.ieWin.

...