eww 如何隐藏/删除一些页面元素?

打开页面之后,第一页被一个登录表单占满了。有什么办法把它移除呢?

image

换个普通的浏览器

eww的末尾是(url-retrieve url 'eww-render ...)url-retrive取得内容后会异步调eww-render,然后eww-render的签名是(status url &optional point buffer encode),看它代码似乎是把已经放到当前buffer的html解析替换一下,所以大概可以给eww-render加个before的advice,在它解析buffer的html之前把你不想要的部分去掉。

可以试试 shr-external-rendering-functions,去年我写过一个利用它给 EWW 的代码块添加语法高亮的包。另一个思路是改动 shr-insert-document 的参数(一个 DOM),有机会把不需要的元素删掉。


我也碰到一个类似的需求:

Emacs China 不久前换了个标识:「Emacs China」=> 「Emacs 中文网」,结果新的图片超大,在 EWW 中压根就没法看。

我正在用的思路:添加一些CSS规则来规定某个DOM节点是有用的,分离出这些DOM里的文本,在网页里查找,让光标定位到该行,从而自动跳过第一页的部分内容。

对于本页面,打开的话将跳过头图和标题,定位到"Emacs-general"里"E"的位置,从而直接看回复: