Greasemonkey: V4 @match ведет себя иначе, чем V3 и TamperMonkey

Созданный на 15 нояб. 2017  ·  8Комментарии  ·  Источник: greasemonkey/greasemonkey

В моем сценарии есть следующие записи (дезинфицированные по адресам интрасети):

// <strong i="6">@match</strong>        http://*.some-net.net/*
// <strong i="7">@match</strong>        http://*.some-net.net/*
// <strong i="8">@match</strong>        https://*.some-othernet.net/*
// <strong i="9">@match</strong>        https://*.some-othernet.net/*

На V3/tampermonkey это работает для всех следующих примеров адресов (как http, так и https)

[1] service.some-net.net
[2] service.some-othernet.net
[3] service.some-net. сеть: 1234
[4] service.some-othernet. сеть: 1234
[5] service.customer.some-net. сеть: 1234
[6] service.customer.location.some-net.net

Однако на V4 [3][4] и [5] не работает. Для [3] исправление заключалось в том, чтобы добавить те, которые также соответствуют порту:

// <strong i="23">@match</strong>        http://*.some-net.net:*/*
// <strong i="24">@match</strong>        http://*.some-net.net:*/*
// <strong i="25">@match</strong>        https://*.some-othernet.net:*/*
// <strong i="26">@match</strong>        https://*.some-othernet.net:*/*

Что касается [5] я пробовал это, но даже это не помогает

// <strong i="30">@match</strong>        http://*.*.some-net.net:*/*
// <strong i="31">@match</strong>        http://*.*.some-net.net:*/*
// <strong i="32">@match</strong>        https://*.*.some-othernet.net:*/*
// <strong i="33">@match</strong>        https://*.*.some-othernet.net:*/*

И это не имеет для меня никакого смысла, так как [6] работает только с первым (исходным) набором правил.

Все 8 Комментарий

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

Тем не менее, сравнивая новый/старый код:

Я не понимаю, как это произошло, это не изменилось.

Ну, возможно, что-то изменилось в методе, используемом для получения текущего URL. У всех с новым Firefox есть эта проблема, у других, использующих старый FF/Chrome, она работает.
К сожалению, когда я хотел изменить XPI, чтобы добавить некоторые отпечатки, я обнаружил, что его нужно подписать....

Есть Bugzilla про матч и порты. Не уверен, какое было разрешение. Посмотрим, смогу ли я найти его.

Бузилла на матче и подушках. Здесь .

Хорошо, еще в 3.x днях мы использовали nsIURI , у которого были отдельно host , port и hostport . Теперь мы должны использовать URL , который по-прежнему называется host , но это означает hostport . Нам нужно использовать hostname .

Не имеет прямого отношения к функционалу задачи, но гарантирует совместимость с реализацией FF. Следует ли реализовать указанный API.

https://bugzilla.mozilla.org/show_bug.cgi?id=1395278

Это исправление должно быть в 4.1beta6; тестирование и подтверждение этого было бы очень признательно!

https://addons.mozilla.org/firefox/downloads/file/800957/greasemonkey-4.1beta6-an+fx.xpi?src=devhub

Проверено сейчас и, кажется, работает правильно. Спасибо!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги