IE6 теряет строку запроса

У меня есть страница, которая получает значения из строки запроса, используя javascript window.location. Это отлично работает при запуске с веб-сервера, но если я запускаю его локально с помощью IE6, помещая это в адресную строку

c:\mysite\index.htm

Любые строки запроса, которые создает сайт, теряются, а window.location содержит только местоположение до .htm.

Я понимаю, что в приведенном выше примере нет строки запроса, но эта страница ссылается на страницы, которые имеют. Это также не работает при запуске из общего сетевого ресурса, например \\server\mysite\index.htm. Кажется, он отлично работает в IE7+ и не работает только в IE6.

Любые идеи, это сводит меня с ума.

Редактировать: я просто понял, что это происходит в модальном окне, имеет ли это какое-то значение?


person Gavin    schedule 20.08.2009    source источник
comment
iedeathmarch.org   -  person Havenard    schedule 20.08.2009


Ответы (4)


Строки запроса явно не существуют для URI схемы «файл». См. RFC1738. Нет смысла ставить ?query в конце URI ‘file:’.

Если вы хотите добавить на страницу дополнительную информацию о местоположении, доступную для скриптов, используйте идентификатор #fragment и location.hash.

person bobince    schedule 20.08.2009

Это может быть проблемой безопасности в IE6. Единственное, что я могу придумать, это использовать HTA вместо HTML-файла. Это вариант?

person Karl Johan    schedule 20.08.2009

Знаете ли вы, что window.location — это не простая строка, а структурированный объект с полями? Строка запроса находится в window.location.search - очевидно, IE6 просто не включает эту часть при печати родительского объекта.

person Michael Borgwardt    schedule 20.08.2009
comment
да, я знаю об этом, IE6, кажется, теряет текст поиска при работе в автономном режиме - person Gavin; 20.08.2009
comment
хм, тогда это неприятная причуда. - person Michael Borgwardt; 20.08.2009
comment
он также, кажется, добавляет к местоположению файл: // не уверен, имеет ли это какое-либо значение в том, как он работает - person Gavin; 20.08.2009
comment
Он добавляет к местоположению файл://, потому что вы используете файловый протокол, а не протокол HTTP. Как указывает bobince, строка запроса не имеет значения по отношению к файловому протоколу. Это HTTP-вещь, поэтому IE имеет полное право отказаться от него для доступа к файловой системе. Если вы хотите использовать HTTP, вам нужно запустить HTTP-сервер. - person NickFitz; 20.08.2009

Кажется, что IE6 игнорирует любые строки запросов при локальном запуске в модальных окнах. Обойти проблему, передав переменные в модальное окно в качестве аргументов диалога, а не строк запроса.

person Gavin    schedule 24.08.2009