Почему этот код greasemonkey / javascript работает на двоеточии? - PullRequest
0 голосов
/ 03 апреля 2012

Работает как положено - желаемая функциональность - возможность более легкого вызова bang! С помощью точки с запятой. Однако по какой-то причине это также вызывает постоянное обновление для URL-адресов, которые содержат двоеточие (для которого он фактически не должен делать ничего).

Вот код:

// ==UserScript==
// @name           DDG Semicolon Bangs
// @include        https://duckduckgo.com/?q*
// ==/UserScript==

    window.location.href = window.location.href.replace(/%3B/, '%21');

// End of script

Пример тестовых страниц: https://duckduckgo.com/?q=w%3A+greasemonkey (почему это постоянно освежает ?? !!?!?! Garrrr!) И https://duckduckgo.com/?q=w%3B+greasemonkey (работает как положено - ура!)

1 Ответ

4 голосов
/ 03 апреля 2012

Не рассчитывайте на (нестандартную для браузера) вещь, которая происходит, когда вы устанавливаете местоположение окна в текущее местоположение.Проверьте, соответствует ли местоположение вашему регулярному выражению, прежде чем заменить его.И используйте location.replace, чтобы избежать установки записи в истории браузера.

var re = /%3B/g;
if (re.test(window.location.href)) {
    window.location.replace(window.location.href.replace(re,'%21'));
}
...