Mdx之文件目录的兼容性处理想法

起因:
(1)多年前倒腾大英百科2010版时,发现给video加poster在android mdict无效(那会儿win版GoldenDict播不了视频就没管)。当时仅以为是软件支持问题,近来意识到是软件没有转换javascript添加的poster="local_address"里的地址,而直接修改mdx也没用,应该也是软件的地址解析程序没有管poster属性里的地址。
(2)js里加的window.location.href="#id"在列表模式下无效,现在想来应该也是程序处理的缘故(我觉得这个软件开发者处理一下为好)。
(3)通过js添加<img src="local_svg">无效,一开始我还以为是不支持此种方式的svg,后来意识到也是地址解析的缘故。
(4)oaldpe10里带了个console可以看html代码,这才看到android mdict把地址给处理成啥样了,地址中包括了软件给词典分配的数字编号。
尝试:
这两天捡起当年的大英百科,还是加poster,想到了一个法子:在mdx中加入一个<img src='local_address' class="poster_image">,css中设置.poster_image{display:none},通过js获取poster_image中的src属性,给video的poster属性赋值。如此就能让poster的地址成为被软件解析过的有效地址,实测有效。
想法:
软件处理的类型无非几类:

<a href="entry://xxx> //词条超链接
<a href="sound://xxx> //发音
<a href="#xxx"> //词条内锚跳
<a href="entry://xxx#yyy"> //词条外锚跳
<ele src="xxx"> //资源地址

可以在每个词条的开头或末尾,添加这么几个相关的元素,设置display:none。那么就可以获取软件对地址的处理方式,用于动态添加地址的处理。

4 Likes

能给个范例mdx + mdd么?这方法很棒。

我觉得我的函数写的不好看hhh
思路就是这样,操作起来应该不难吧。以第一种为例:
mdx:

<div id="dict_software_prefix">
    <a id="dict_software_prefix_entry" href="entry://☺☺☺☺☺☺"></a>
    ...
</div>

css:

#dict_software_prefix {display: none;}

js:

//全局变量(适当改名避免冲突),或主函数下的变量,其他函数作为主函数的内部函数
var entry_prefix =
dict_software_prefix=document.getElementById('dict_software_prefix_entry')
.href.replace('☺☺☺☺☺☺', '');
...

需要用时直接调用全局变量就行

在这里就是这行代码,你亲测成功放video了么?应该普及开来。

我那个搞的简单,用的就是目标文件(而非虚拟测试文件),没有地址字符串替换操作,直接复制过去就行。(还有些tricky的地方,需要设定video文件的尺寸,不然安卓上poster全宽、播放后尺寸变化。这两天等我改好了会分享出来,感兴趣可以解包看看)

1 Like

期待,以后可以模块化了!
最好不要用jquery,只用javascript。

模块化肯定是趋势,不过我暂时还没动力搞hhh
当年ff大神搞的setupPlatform和scrollPosition,经过众人完善调整后我就给用到各种词典了。这种东西其实搞几个模块挺方便的。

哦,我不知道FF已经有本地播放视频的功能了,
好像FF没有用jquery,至于是不是和你的方法一样我得看看才能知道了。
应该不是一样的。很明显不需要动用jquery。

ff没搞这个,我说的是他那个跳转,通过识别设备平台实现业内跳转在桌面端以滚动动画形式实现、移动端以锚跳形式实现,以及一些别的平台兼容性设定

是的,他是第一个javascript平台兼容人(除了mdictPC hhh) 可惜隐退了
如果你有空,弄一个兼容的视频范例,也是第一人!

没懂你说的是什么意思。。视频兼容很简单啊,用video标签再加上兼容性足够的编码格式文件就行了

我知道,就是想等你的版本。

好多年前在隔壁分享的修改版就能实现了。。此论坛的数据库里用的EB2010(encyclopaedia里ae是连字的那个)是我改的版本,但图片和视频是未压缩的版本,印象中好像原视频的声音播不了(编码格式不支持),不知道论坛版本能播不。

我之前找到了你说的这个版本,没意识到里面含有本地/mdd里面的Video playback
让我细看一下,谢谢!

太难了,慢慢学习啊。