Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对于Discuz!论坛里的帖子无法正常使用简悦。 #657

Open
Alpha-Peng opened this issue Feb 11, 2020 · 17 comments
Open

对于Discuz!论坛里的帖子无法正常使用简悦。 #657

Alpha-Peng opened this issue Feb 11, 2020 · 17 comments

Comments

@Alpha-Peng
Copy link

chrome安装插件,显示匹配,能进入阅读模式,但是帖子里论坛自动生成的防拷贝的干扰码乱码文字就会显示出来影响阅读。使用uBlock Origin使用屏蔽元素##font.jammer能屏蔽掉网页里隐藏显示的复制时出现的干扰码,但是进入阅读模式以后,依然有干扰码。

@Kenshin
Copy link
Owner

Kenshin commented Feb 12, 2020

谢谢反馈。

建议把 URL 发上来,我看看能否通过 CSS 等手动屏蔽。

@Kenshin Kenshin added the bug label Feb 12, 2020
@Alpha-Peng
Copy link
Author

实验了一下,用站点编辑器,加入语句[['##font.jammer']]都可以屏蔽,只是需要自己加,希望能自动适配所有的Discuz!论坛。

@Kenshin
Copy link
Owner

Kenshin commented Feb 12, 2020

会考虑你的建议。 😀

@binsee
Copy link
Contributor

binsee commented Sep 6, 2020

可参考页面
https://www.lxwc.com.cn/post-20589-1-1.html
https://www.moqu8.com/thread-7413-1-1.html

建议在全局过滤 class='jammer' ,不仅仅适用于 Discuz,还有其他站点也可以使用此方式过滤掉干扰码

@binsee
Copy link
Contributor

binsee commented Oct 12, 2020

其实是有两种干扰码,一种可见一种不可见,仅通过过滤css并不一定可行
image

即使删除了干扰码元素,在未适配的页面进入阅读模式仍然会出现干扰码,不知道简悦是从哪里提取出来的,页面上元素明明都被清除掉了。
即使是适配,通过xpath仍然会提取出已经被删除掉的干扰码元素,但jquery提取出的没问题,这个情况和 #1215 有点类似

删除干扰码的测试代码:

var parent=$('.jammer').parent()
$('.jammer').each(function(){$(this).remove()})
parent.find('span[style="display:none"]').each(function(){$(this).remove()})

@Kenshin
Copy link
Owner

Kenshin commented Oct 13, 2020

@binsee

在未适配的页面进入阅读模式仍然会出现干扰码,不知道简悦是从哪里提取出来的,页面上元素明明都被清除掉了。

你是不是加了 uBlock 之类的扩展?这些有可能是未过滤的 uBlock 内容。

@binsee
Copy link
Contributor

binsee commented Oct 13, 2020

我使用了Adgrued,但在Devtools中执行代码以清除干扰码元素后,网页节点中确实找不到干扰码内容了,但进入阅读模式就会出现明明已经被删除的干扰码。我在Network记录中中查找了干扰码,没有发现有js动态在网页内再写入干扰码。
因此,只是进入阅读模式时,xpath模式提取到了已经不存在的元素节点。
当然你提到的过滤插件也有可能,我之后试试看纯净环境下xpath模式是否正常

@binsee
Copy link
Contributor

binsee commented Oct 13, 2020

经过在无其他插件的环境中调试,确认并非Adgrued之类插件问题,引发问题的原因如下:

  1. 在网页加载后,简悦将代码注入页面执行
    • 如页面已适配,则执行适配规则。
    • 如页面未适配,则使用语法引擎提取高亮内容并缓存
  2. 进入阅读模式
    • 如存在缓存数据,则以缓存数据作为高亮内容(未适配)
    • 如不存在缓存数据,则使用适配规则提取高亮内容

因此,需要清除语法引擎缓存的页面数据才可以使进入阅读模式时(无论是否适配)从真实显示的页面数据中提取内容。

使用了以下代码,以插件代码进行调试,测试可行:

$$current.site.html=''
var parent=$('.jammer').parent()
$('.jammer').each(function(){$(this).remove()})
parent.find('span[style="display:none"]').each(function(){$(this).remove()})

以上代码已经提交为插件id: h5IhWnpnDx

@mizhewei
Copy link

现在这个支持怎么样了 现在论坛还是没有过滤[['##font.jammer']]

@Kenshin
Copy link
Owner

Kenshin commented May 26, 2023

@mizhewei

暂时没有更新,好久不用 Discuz 论坛了 😂

@mizhewei
Copy link

这个插件现在找不到了 是版本更新不能用了吗
ps 如果直接站点编辑,该怎么做,我试了没效果
感谢

@Kenshin
Copy link
Owner

Kenshin commented May 26, 2023

@mizhewei

这个插件现在找不到了 是版本更新不能用了吗

没理解你的问题,哪个插件?还有,最好给出有问题的 URL

@mizhewei
Copy link

binsee 大佬的:
以上代码已经提交为插件id:` h5IhWnpnDx
链接的话,https://www.moqu8.com/thread-7413-1-1.html 这个可以测试

@Kenshin
Copy link
Owner

Kenshin commented May 26, 2023

@mizhewei

这个插件暂时搁置了 😂 这个方式其实可以考虑用另外的方案实现,类似 #5428

你可以多提供给我一些 Discuz 作为参考。

@Kenshin Kenshin removed the puread label May 26, 2023
@mizhewei
Copy link

那应该怎么做啊 怎么屏蔽font.jammer
#5428 似乎不支持非discourse

@Kenshin
Copy link
Owner

Kenshin commented May 26, 2023

@mizhewei

我来实现…你只需要多提供给我多一些的 Discuz URL 做参考就行。

@mizhewei
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants