Как сделать стабильный букмарклет для Gmail - PullRequest
0 голосов
/ 28 февраля 2019

Я сделал простой букмарклет, просто добавив «is: unread» в строку поиска Gmail.

javascript:
(function () {
    // add "is:unread" after the query
    // e.g. "from:kim-kardashian" -> "from:kim-kardashian is:unread"
    document.getElementsByClassName("gb_Df")[0].value = 
        document.getElementsByClassName("gb_Df")[0].value.concat("is:unread");
    // click search button
    document.getElementsByClassName("gb_Ef gb_Qf")[0].click();
    }
)();

Вчера все работало хорошо, но сегодня не работает из-за изменения className.Я предполагаю, что className панели поиска изменяется для каждой сессии.Если это правда, есть ли альтернативный способ, который добавляет is:unread в конце поискового запроса?

1 Ответ

0 голосов
/ 28 февраля 2019

Сторонние ресурсы вне вашего локуса контроля, как правило, никогда не считаются стабильными.Вот почему мы пометили версии (например, dev = всегда в потоке) и заключили контракты, чтобы попытаться приблизиться к стабильности.

Для чего-то подобного этот HTML обычно более стабилен, чем имена классов, но никогда бы не сказал, что этот плагинстабильный, в то время как вариант использования не поддерживается Google.

Так что, если действительно, то, что утверждается, верно, что имена классов CSS меняются за сеанс, можно выбрать из DOM на основе структуры HTML или другого атрибута, который не являетсяhashed.


Просто взглянул на gmail и действительно gb_Df имя класса - это строка поиска.Полагаю, ваша учетная запись была автоматически включена в тест AB одной версии gmail для другой, который сгенерировал различные хеши имен классов.

В этом сценарии можно выбрать placeholder.Итак, что-то вроде:

document.querySelector('[placeholder="Search mail"]')

Исходя из опыта (совершенно анекдотично), очень маловероятно, что это значение изменится, и в настоящее время оно есть на странице.Можно проверить другие достаточно стабильные атрибуты, чтобы убедиться, что вы выбрали правильный.Просто имейте в виду, что подобные хакерские плагины нестабильны, могут только постепенно увеличивать стабильность, используя более стабильные селекторы, потому что почва, на которую они полагаются (Gmail DOM), движется со скоростью Google.Удачи:)

...