Notepad++: как передать параметр в локально сохранённую веб-страницу из контекстного меню (правый клик)

Как открыть локальный HTML-файл с параметром (query string) из контекстного меню Notepad++

Проблема: при попытке открыть локально хранящийся index.html из контекстного меню Notepad++ с передачей параметра в URL (через ?), сам файл открывается, но параметр (query string) в браузере оказывается пустым — window.location.search возвращает пустую строку. При прямой вставке URL с параметром в адресную строку браузера всё работает.

Короткий ответ

Не передаётся query string, если вы запускаете локальный файл как обычный путь. Решение — вызвать браузер явно и передать ему file:/// URL с тремя слешами и прямыми слешами; аргумент URL должен быть в кавычках. Примеры конфигурации команд ниже.

Пояснение простыми словами

  • Когда вы указываете просто путь к файлу (например C:\путь\файл.html?параметр) или используете форму, при которой Notepad++ / Windows обрабатывает путь, знак вопроса может экранироваться или трактоваться как часть имени файла — в результате браузер не видит query string.
  • Если же вы передаёте браузеру корректный file URI вида file:///C:/путь/файл.html?параметр, браузер корректно разбирает URL и query string доступен через window.location.search.
  • Обратите внимание на прямые (/) слеши в URI вместо обратных (\\), а также на кавычки вокруг всего аргумента.

Исходные примеры (не менять)

Вот примеры команд и проверочного кода, как они выглядят:

<Command name="OSM History" Ctrl="no" Alt="yes" Shift="no" Key="114">file:///E:/dwgs/Json/OSM_tag_history/index.html?$(CURRENT_WORD)</Command>
console.log("Search params:", window.location.search);
console.log("Full href:", window.location.href);
<Command name="Google Search" Ctrl="no" Alt="yes" Shift="no" Key="113">https://www.google.com/search?q=$(CURRENT_WORD)</Command>
<Command name="Example" Ctrl="no" Alt="yes" Shift="no" Key="0">"C:\path\to\browser.exe" "C:\path\to\file.html?$(CURRENT_WORD)"</Command>
<Command name="Example" Ctrl="no" Alt="yes" Shift="no" Key="0">"C:\path\to\browser.exe" "file:///C:/path/to/file.html?$(CURRENT_WORD)"</Command>

Варианты решений

Ниже — варианты, из которых следует выбирать в зависимости от окружения и предпочтений.

Вариант 1 — Рекомендуемый: запуск браузера с file:/// URL

  1. Укажите полный путь до исполняемого файла браузера в команде Notepad++.
  2. Передайте браузеру файл в виде file:///C:/путь/к/файлу.html?$(CURRENT_WORD).
  3. Используйте прямые слеши (/) и обязательно обведите в кавычки весь аргумент, чтобы пробелы или спецсимволы не ломали команду.

Пример рабочего варианта:

<Command name="Example" Ctrl="no" Alt="yes" Shift="no" Key="0">"C:\path\to\browser.exe" "file:///C:/path/to/file.html?$(CURRENT_WORD)"</Command>

Почему работает: вы явно запускаете браузер и сразу даёте ему корректно сформированный URI. Браузер разбирает URI и query string попадает в window.location.search.

Вариант 2 — Попытка: запуск браузера с локальным путём и query (не надёжно)

Иногда пробуют вызвать браузер передав обычный Windows-путь с вопросительным знаком:

<Command name="Example" Ctrl="no" Alt="yes" Shift="no" Key="0">"C:\path\to\browser.exe" "C:\path\to\file.html?$(CURRENT_WORD)"</Command>

Почему не стоит: в этой форме знак вопроса часто экранируется или становится частью имени файла, поэтому OS/браузер не распознаёт query string и попытка открыть файл с таким именем завершается неудачей (файл не найден).

Вариант 3 — Вызов только file:/// в самой строке команды Notepad++ (иногда не проходит)

Если вы пытаетесь поместить file:///… прямо в элемент конфигурации команд (без явного указания браузера), Notepad++ может по-своему интерпретировать такое значение и лишний раз экранировать символы. Поэтому надёжнее указывать браузер явно.

Практические рекомендации и чеклист

  • Всегда указывайте полный путь до браузера: «C:\path\to\browser.exe».
  • Передавайте URL в виде file:///C:/путь/к/файлу.html?параметр — три слеша и прямые слеши.
  • Заключайте аргумент URL в кавычки: «file:///C:/…?…».
  • Проверьте, что макрос Notepad++ ($(CURRENT_WORD) или другой) действительно подставляет нужное значение.
  • Если нужен https/https URL — обычно всё работает напрямую (пример с Google Search показывает, что веб-URL с параметрами корректно передаётся).
  • Для отладки добавьте в ваш HTML-файл временные console.log или выводы в DOM, чтобы убедиться, что query string читается.

Короткий пример рабочего набора

Настройка команды в Notepad++ (пример):

<Command name="Example" Ctrl="no" Alt="yes" Shift="no" Key="0">"C:\path\to\browser.exe" "file:///C:/path/to/file.html?$(CURRENT_WORD)"</Command>

Выводы

  • Проблема не в браузере — браузер правильно обрабатывает file URI, если он получает корректный URL.
  • Причина — способ передачи аргумента из Notepad++/Windows: обычный путь с вопросительным знаком часто интерпретируется неверно.
  • Решение: явно запускать браузер и передавать ему аргумент в формате file:/// с прямыми слешами и в кавычках. Это универсальный и надёжный способ.

Если после этого всё ещё не работает, проверьте, нет ли дополнительных правил экранирования в вашей конкретной конфигурации Notepad++ (файлы конфигурации, плагин, через который вы редактируете меню) и протестируйте команду в командной строке Windows вручную, чтобы убедиться, что аргументы передаются правильно.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *