window.location не работает после запроса AJAX в Internet Explorer

Я пытаюсь запустить приложение ClickOnce по ссылке на веб-странице. Ссылка должна перейти на сервер, чтобы запросить GUID транзакции, прежде чем он сможет запустить приложение. Код работает следующим образом:

function clickHandler() {
    $.post('/gettransactionid.aspx', function(tranId) {
        console.log("BEFORE");
        window.location = "/deploy/Company.Domain.Product.application?" + tranId;
        console.log("AFTER");
    });
    return false;
}

Это отлично работает в Firefox, но в IE он выполняет навигацию и не открывает приложение clickonce. Журнал console.log ДО и ПОСЛЕ отображаются в окне консоли в инструментах разработки IE8. Любая помощь будет принята с благодарностью, так как я потратил 4 часа на то, чтобы решить эту проблему с помощью различных уловок!

Я пробовал:

  • изменить window.location на window.open. Это просто вызывает окно на секунду и не запускает приложение.
  • предупреждение вместо window.location. Это ничего не делает.
  • Против IE7, IE8 и IE9.
  • Обход безопасности браузера путем добавления его в очередь и обработки окна. местоположение в контексте корневого окна.
  • Я проверил, что gettransactionid.aspx возвращает идентификатор транзакции.
  • Выполняется в Firefox - все работает нормально.

Нашел ответ в документации Microsoft:

Если вы разработали настраиваемая веб-страница, запускающая приложение ClickOnce с использованием активных сценариев, вы можете обнаружить, что приложение не запускается на некоторых машинах. Internet Explorer содержит параметр «Автоматические запросы на загрузку файлов», который влияет на это поведение. Этот параметр доступен на вкладке «Безопасность» в меню «Параметры», который влияет на это поведение. Он называется автоматическим запросом загрузки файлов и указан в категории «Загрузки». Для этого свойства установлено значение «Включить по умолчанию» для веб-страниц в интрасети и «Отключить» по умолчанию для веб-страниц в Интернете. Если для этого параметра установлено значение Отключить, любая попытка программно активировать приложение ClickOnce (например, назначив его URL-адрес свойству document.location) будет заблокирована. В этом случае пользователи могут запускать приложения только через инициированную пользователем загрузку, например, щелкнув гиперссылку, установленную для URL-адреса приложения.

Обновление от 1 сентября 2011 г .: По иронии судьбы, теперь это полностью не работает в IE9 благодаря «автоматическому запросу» для загрузок "удаляется.

6
задан Deleted 1 September 2011 в 14:28
поделиться