Программная передача # в URL в браузер - PullRequest
2 голосов
/ 02 марта 2012

Мне нужно передать символ # как часть URL в браузер и открыть его программно. Когда я делаю следующее:

google-chrome path_to_some_file.pdf#view=Fit

Открытая страница в браузере - path_to_some_file.pdf%23view=Fit, что не является предполагаемым URL. Когда я вручную удаляю %23 и набираю # в адресной строке браузера, тогда это работает. Как программно передать символ # в браузер?

1 Ответ

3 голосов
/ 25 июля 2014

Вам необходимо указать полный URL-адрес file:///, чтобы включить ? запрос или # хеш-строки.

Подробнее:

В IE10 работает следующий подход, Firefox 28 и Chrome 36.

Если вы делаете это из пакетного файла в Windows с любым из этих браузеров, вы можете использовать обратную косую черту в пути до тех пор, пока вы используете префикс file:///.Например, file:///C:/blah/blah/file.pdf#etc - это правильный URL, но если ваш адрес отформатирован file:///C:\blah\blah\file.pdf#etc, это тоже будет работать.

Вот как вы можете получить полный путь, используя командный файл.

file:///%CD%/file.pdf#blah

преобразуется в файл относительно рабочего каталога (обычно каталог пакетного файла, в отличие от явно измененного через командную строку или программно).

file:///%~dp0/file.pdf#blah

преобразуется в файл, относящийся к каталогу пакетного файла,Я обычно говорю с этим.

Вы можете использовать ../ для перемещения вверх относительно каталога командного файла.Полученный URL все равно должен работать нормально.

Если вы используете что-то более надежное, чем командные файлы, вы можете перевести все \ в / s, чтобы создать правильный URL.

Например, в .NET я думаю, что вы можете сделать new Uri("C:\blah\file.pdf"), и он даст вам файловый URI (я думаю, не уверен), который вы затем сможете получить и добавить к нему хеш.

...