我做了一个简单的书签,只需在Gmail搜索栏中添加“ is:unread”即可。
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
?
答案 0 :(得分:1)
在您控制范围之外的第三方资源通常不会被认为是稳定的。这就是为什么我们标记了版本(例如dev =总是不断变化)并签订合同以尝试实现稳定性的原因。
对于这样的东西,HTML通常比类名更稳定,但是在Google不支持用例的情况下,永远不会说这个插件是稳定的。
因此,如果说的确实是对的,那么每个会话的CSS类名称都会更改,可以从基于HTML结构的DOM中选择,也可以从其他未哈希的属性中选择。
只需看一下gmail,实际上gb_Df
类名就是搜索栏。猜猜您的帐户已经自动选择对一个gmail版本和另一个gmail版本进行AB测试,该测试产生了不同的类名哈希。
在这种情况下,将选择placeholder
。像这样:
document.querySelector('[placeholder="Search mail"]')
根据经验(完全轶事),此值不太可能会更改,并且当前页面上有一个。可以检查其他合理稳定的属性,以确保您具有正确的属性。请记住,这样的插件程序是不稳定的,只能通过使用更稳定的选择器来逐步提高稳定性,因为它们所依赖的基础(Gmail DOM)正在跟上Google的步伐。祝你好运:)