Можно ли переписать URL (с дополнительными параметрами) с расширением Chrome

Я пытаюсь добавить несколько дополнительных параметров в URL, который набрал пользователь (до загрузки страницы). Возможно ли это сделать?

Например, если пользователь вводитwww.google.comЯ хотел бы добавить?q=query на URL (окончательный вариант:www.google.com?q=query.

Спасибо

Ответы на вопрос(2)

This is an old question still I am answering it for future readers.

Модификация параметров запроса немного сложна, потому что вы можете выполнить бесконечный цикл, и chrome / firefox может обнаружить его и обработать любое текущее состояние URL-адреса запроса.

Я столкнулся с такой ситуацией в моем расширении ChromeRequestly где пользователи использовалиReplace Rule и заменилwww.google.com сwww.google.com?q=query или сделал что-то подобное.

Проблема этого подхода заключается в том, что браузер может перехватить URL-адрес запроса после добавления параметра запроса, поэтому параметр будет добавлен несколько раз и повредит URL-адрес. Таким образом, вы должны обеспечить одно из следующих действий:

Do not intercept request once it has been redirected. Check if parameter already exist, do not redirect it.

Как правильно указал @apsillers в своем ответе, вы должны использовать webRequest API для выполнения любых модификаций URL. Пожалуйста, посмотрите на егоответ и напишите свой код соответственно.

На всякий случай, вы ищете уже доступное решение, попробуйтеЗапросное правило параметра запроса, Вот скриншот о том, как это выглядит:

enter image description here

Для Firefox вы можете скачать Requestlyсо своей домашней страницы.

WebRequest API может быть то, что вам нужно. Этот код идет на вашей фоновой странице:

    function(details) {
        if( details.url == "http://www.google.com/" )
            return {redirectUrl: "http://www.google.com/?q=defaultquery" };
    },
    {urls: ["http://www.google.com/*"]},
    ["blocking"]);

Это очень специфическое правило, которое перенаправляет посещенияhttp://www.google.com/ сhttp://www.google.com/?q=defaultquery, но я думаю, вы можете увидеть, как расширить его, чтобы включить больше функциональности.

Обратите внимание, что это будет перенаправитьall попытки достичьhttp://www.google.com/, включая запросы Ajax и фреймы.

Согласно документации, вам нужно будет добавитьwebRequest а такжеwebRequestBlocking разрешения, а также разрешения хоста для каждого хоста, который вы планируете перехватить:

"permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://*.google.com/",
    ...
],
 08 дек. 2015 г., 18:39
Какой файл я должен написать этот код, как мы добавляем разрешение на это.
 08 дек. 2015 г., 18:43
@anwerjunaid Из вышеприведенного текста: & quot; код помещается на фоновую страницу. & quot; Необходимые разрешения описаны вfirst paragraph in the webRequest documentation, о котором я уже упоминал выше. Тебе нужноwebRequest, webRequestBlockingи разрешения хоста для каждого сайта, который вы хотите перехватить.

Ваш ответ на вопрос