ninja33 / ODH

A chrome extension to show online dictionary content.
MIT License
1.41k stars 242 forks source link

于Anki 2.1.51 Qt6版本中,Antimoon模板格式失效 #242

Closed WritingWithFire closed 2 years ago

WritingWithFire commented 2 years ago

参见:https://github.com/ninja33/ODH/issues/238

上述issue中,我曾经提到过格式失效的问题,但之前我把它归因于ODH的制卡问题,在2.1.50更新到2.1.51之后,ODH制卡失败的bug被修复了,但是格式失效依然存在,其触发方式和我之提到过的触发方式是一样的,这次值得注意的是:ODH制卡之后,第一次浏览卡片,格式是正常的(可就是说ODH正常工作),第二次(不一定是第二次,也可能是浏览多次之后)浏览的时候格式失效。

损坏之前:

image

image

损坏之后:

image

其他有价值的发现: 这个失效是可以同步到手机上面的,如下: 1f99faac1a39547f5865fa6be3fb3b8

虽然这和ODH无关,但我希望得到这个问题的答案。。。以及如何将失效的卡片恢复

ninja33 commented 2 years ago

我看到上述截图显示了释义部分的html格式。能不能查看和对比一下词头字段(比如这里是blonde)的html格式的(失效)前后对比?因为目前格式的css是藏在词头的

WritingWithFire commented 2 years ago

不管是损坏前还是损坏后的卡片,expression字段的html格式都只有单词本身(还是说我查看html格式的方法是错的?)

image

ninja33 commented 2 years ago

不知道你用什么看到。应该在anki客户端的卡片编辑界面看。

ninja33 commented 2 years ago

你要不把你的模版给我一份。存一张卡片打包一个apkg,发给我。然后给我看看你的odh里的anki选项,主要是字段映射。我明天下载一个最新版anki看看能不能重现你的问题

WritingWithFire commented 2 years ago

image 是这个吗

我是点击这里看到的 image

WritingWithFire commented 2 years ago

ODH选项: image

我的卡片: DBUG.zip

ninja33 commented 2 years ago

看了一下我这边已经重现了这个问题。

本来ODH在制卡的时候,前端代码里,会把一段css样式附在definition(单一释义)或者definitions(全部释义) 字段里 https://github.com/ninja33/ODH/blob/35f5f4ec764b12dacdddbb7751bc0156d8e4a87f/src/fg/js/frontend.js#L146-L148

样式在词典脚本里,是这个样子的 https://github.com/ninja33/ODH/blob/35f5f4ec764b12dacdddbb7751bc0156d8e4a87f/src/dict/builtin_encn_Collins.js#L111-L122

这么做主要是为了考虑到有的人完全不会使用anki的样式区,那用ODH制卡的时候,可以得到和弹窗一样的“所见即所得”的卡片。

如果你制卡后,完全没点进过释义区,那么这段css还是保留得 image

但如果你点进这个释义区,再出来,那么anki得自动保存,就把这段css给escape掉了,这个可能是新版的新特性,防止你放一些非html的脚本或者样式。 image

一个补救的办法是把这段css 直接放到你卡片模板的样式区。那么不管释义区的css有没有消失,这段样式始终有效 image

WritingWithFire commented 2 years ago

问题已经解决了,谢谢老黄。