我经常访问一个网站,其中有“点击更改为深色主题”按钮。黑暗主题更容易阅读,所以我每次访问都必须单击链接(关闭时清除历史记录)。
我在本地 Linux 机器上运行 Firefox;因此 Javascript、HTML、Python 和 Bash 都可用。
我专注于书签,因为它似乎是正确的方式 - 然而,我所做的一切都不起作用。我不熟悉 Javascript,所以花了几天时间查找并尝试示例。它可能无法作为书签,所以也许还有另一种方法?
书签 - 设置然后开始
这是我所拥有的:
javascript:document.cookie="theme=dark; domain=example.org; path=/;"; location.href="http://www.example.org";
如果只有 cookie,它就可以工作;如果它只加载网站,它就可以工作,但不能同时加载两者。我可以先以编程方式访问该页面,设置 cookie,然后重新加载,但这也不起作用。我不想点击两个链接。 “example.org”是正常访问时存储 cookie 的方式,我同意 cookie 仅在该会话中持续存在。
持久性 Cookie
我无法让 Firefox (IceCat) 保留 cookie。我将其设置为“例外”以允许,但除非“保留 cookie 直至过期”和“Cookie”均未选中以在关闭后删除,否则不会保留任何内容。这样做可以防止所有 cookie 来自任何地方,这是我不想做的。
永久 Cookie
我尝试将 cookie 设置在不可变文件中 - 但 Firefox 不再将 cookie 保留在那里。它们在 SQLite 中。也许有一种方法可以在该行上设置一个标志,这样它就永远不会被删除? User.js 和 prefs.js 似乎不适用 - 但是否可以在 prefs.js 或 user.js 中设置 cookie,为每个浏览器加载设置它,从而创建“永久 cookie”?
小书签 - 前往然后单击
我尝试的另一件事是打开页面,然后以编程方式单击链接以加载深色主题:
javascript:location.href="http://www.example.org";document.getelementbyid('Dark').click();
ID 已知且采用无效锚点(无 href)的形式。该网站的 JavaScript 似乎正在侦听点击事件。这是他们拥有的:
$('#Dark').click(function(){
document.cookie='theme=dark; domain=.example.org; path=/';
window.location.reload(true);
});
那么,难道不应该像设置环境变量然后加载站点一样简单吗?也许 JS 没有环境变量?
注射它然后忘记它
我读到可以将样式注入到页面的头部,所以我尝试注入:
<script>document.getelementbyid('Dark').click();</script>
通过书签,这似乎应该可以工作,因为单击将在本地上下文中进行。我永远无法让它注入,但我又不懂 JavaScript。
最后一招
如果以上都不可行,是否可以通过将书签添加到本地 .html 文件来完成,该文件为给定域设置 cookie,然后重定向到该站点?最后一个不受欢迎的解决方案是实际脚本(.sh/.py)?
我不想共享该网站,也不想在退出时不清除历史记录。两者都不是由于您可能的想法所致。 :)
我来这里是因为我想要一个 Javascript 解决方案(书签),但我不擅长 Javascript - 所以上面的所有示例都可以通过调整来工作,我只是做错了。
感谢大家的帮助!如果你能解决它 - 你能解释一下为什么我的东西不起作用吗?