掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5228|回复: 35

[辅助工具] 纯JavaScript实现的MDict解析器,请大家提建议

[复制链接]

该用户从未签到

发表于 2015-8-5 11:05:40 | 显示全部楼层 |阅读模式
本帖最后由 fengdh 于 2015-8-5 12:49 编辑
' G3 A* D5 s+ O5 ^. j) w! g& r0 B/ U) ~+ J1 T+ O5 f, g% ~
我并非MDict深度用户,不过因为想为自己开发的浏览器插件提供本地离线字典功能,结果用纯JavaScript实现了一个MDict解析器。这个开源项目现在仍然开发之中,大家可以去 http://fengdh.github.io/mdict-js/ 围观,欢迎提出建议。这仅是一个在线功能演示,还不是一个MDict在线字典的完全实现。它没有服务器端,仅仅通过网页形式提供所需的Javascript库。需要用户从本地选择mdx而且可以附加一个mdd资源文件,因为不会上传服务器完全在本地解析查询,所以几乎是瞬间得到结果。现在可以支持图像/语音/简单跳转/模糊查询/mdd内置样式文件等等。
& a6 ?0 k3 B8 _7 R) H: x9 U% Q+ D& F; f( _4 A9 }
我用手头的LDOCE/OALD/Webster/American Heritage/WordNet多个版本做过测试,字典和资源文件支持词条索引加密但不支持需要注”册-码的索引头加密,支持文件压缩(gzip/lzo都可以)、词条链接、语音(wav和spx,需要mp3支持吗)。暂不支持超大文件(>4G,离线维基?)。暂不支持Stylesheet替换(还没遭遇过使用这个功能的字典,哪位可以提供个实例就太感谢了)。只对英语和汉语词典测试过,不知道其他语言有没有大问题。7 R2 |9 P0 W3 o4 [' D

- C$ n4 ~& E: Z1 s! c我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。4 z( [; T8 {6 _7 }

$ q& Z8 Z: ~. H% h忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。+ p! g; [8 i3 j$ l2 b/ d

4 k# F7 p6 y0 E) j0 n4 e0 e谢谢。
" U& I' d* [9 W7 }6 w1 w: ^& `: K4 |% z+ A( A' t
0 C" E0 v5 t% o0 Y& H3 I
% C2 p! h! Z1 z5 }6 f9 t6 _
0 \- T8 [0 h+ q( |8 u
0 E4 ~2 q0 W; ~$ n; Y
8 M* `8 b3 {/ b1 F" j2 u5 ]. f

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2015-9-3 15:44:29 | 显示全部楼层
如果做成chrome的插件,能在chrome页面里分成左右两栏来,左边显示浏览网页,右边是词典查询界面及查询结果就好了,那样的话goldendict也可以退休了。楼主加油
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:04
    ! W( B3 e# Q% ?您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...

    , M" F% J; K: [8 K, B* f2 @* k: _% ?; @
    ' \3 R0 k, ~% b1 B可能此词典作者还没有公开过吧。。。+ R) f# w, {. N% h% i8 Q

    # k1 m! t, Z3 L6 c- ]dog
    ' |, [! L, S, V6 V' O* V5 E<link rel="stylesheet" type="text/css" href="CALDEC.css" /><a name="C_topz"> <a><span class=C_ENT>dog</span C_ENT><blockmark><a href="entry://#C_hkz1" class=CP_OS>noun</a> | <a href="entry://#C_hkz2" class=CP_OS>noun</a> | <a href="entry://#C_hkz3" class=CP_OS>verb</a> | <a href="entry://#C_hkz4" class=CP_OS>verb</a></blockmark>% [" [$ K' X0 `+ \3 L% b! j. ]
    <hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />
    8 _) L# T. R  C* M/ X: q<span class=CHW>dog</span CHW> <span class="di-info"><span class="posgram"><span class=C_POS>noun</span C_POS> <span class=C_GRE>C</span C_GRE> <span class="C_GW">ANIMAL</span C_GW><span class=CD_CH>动物</span CD_CH>
    # i7 s5 P7 ^+ W<span class="Spron-uk" data-src-mp3="C-A-Muk_pron/u/ukd/ukdoc/ukdocud022.mp3" data-src-ogg="C-A-Muk_pron_ogg/u/ukd/ukdoc/ukdocud022.ogg"></span Spron-uk>
    ( C9 N6 P5 E9 s$ L; l<span class="Spron-us" data-src-mp3="C-A-Mus_pron/d/dog/dog__/dog.mp3" data-src-ogg="C-A-Mus_pron_ogg/d/dog/dog__/dog.ogg"></span Spron-us>
    0 \# N+ G& ]  R- H) Q<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>' `# r! ?& O: Z
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    ) V. q# B( z/ ?<span class=C_BODY><span class="sense-block">% C  R$ \% e) {, v1 Z
    <span class="sense-body"><span class="def-block"><span class="def-head"><span class="def-info"><span class=C_SQU>■</span></span><span class="def">a common animal with four legs, especially kept by people as a pet or to hunt or guard things</span></span><span class="def-body">
    ! l4 p$ n3 U& o, D$ i5 @# c7 N$ x0 c<span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    % @9 s6 ^% C, @: a; i! y! \<span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>my pet dog</span><span class=C_CEX>我的宠物狗</span C_CEX></span>3 `. l6 U. l+ j7 y$ |/ k
    <span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>wild dogs</span><span class=C_CEX>野狗</span C_CEX></span>/ \6 K% g5 L5 U$ \3 v/ K- Z
    <span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>dog food</span><span class=C_CEX>狗粮</span C_CEX></span>* C& U; P  c" o# Y0 ?
    <span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>We could hear dogs barking in the distance.</span><span class=C_CEX>我们可以听到远处的狗叫声。</span C_CEX></span>
    5 c7 ~' i9 W* s' u( Q1 O7 }<span class="smartt"><span class="mcat"><span code="REAFE" class="cat-xref">Canines (dogs)</span></span></span></span></span></span></span sense-block></span C_BODY>8 X- [( C, I& u# |# ^
    <hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />
    " l. E& x4 Q' ^  R1 E. y9 U! m! m" d: n<span class=CHW>dog</span CHW> <span class="di-info"><span class="posgram"><span class=C_POS>noun</span C_POS> <span class=C_GRE>C</span C_GRE> <span class="C_GW">PERSON</span C_GW><span class=CD_CH>人</span CD_CH>" W2 O2 W% C3 U6 S' F
    <span class="Spron-uk" data-src-mp3="C-A-Muk_pron/u/ukd/ukdoc/ukdocud022.mp3" data-src-ogg="C-A-Muk_pron_ogg/u/ukd/ukdoc/ukdocud022.ogg"></span Spron-uk>. x, X9 n& {. I: X& l0 `, Z
    <span class="Spron-us" data-src-mp3="C-A-Mus_pron/d/dog/dog__/dog.mp3" data-src-ogg="C-A-Mus_pron_ogg/d/dog/dog__/dog.ogg"></span Spron-us>+ `3 [7 N( g* ^6 v
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    : z" d$ z9 y6 L<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>3 W& `: X: `' {( E: B$ e  K
    <span class=C_BODY><span class="sense-block">+ B+ y3 k/ o" A6 L
    <span class="sense-body"><span class="def-block"><span class="def-head"><span class="def-info"><span class=C_SQU>■</span><span class=C_LAB><span class=C_USAG>slang</span></span></span> <span class="def">a man who is unpleasant or not to be trusted</span></span><span class="def-body">& z9 S4 |0 i5 u0 `( k# Q
    <span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>: J8 W/ H( B& c5 w1 V, ?' i
    <span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>He tried to steal my money, the <span class=C_STR>dirty</span> dog.</span><span class=C_CEX>这个无赖,他想偷我的钱。</span C_CEX></span>& d5 y- n& I; R. \
    <span class="smartt"><span class="mcat"><span code="NLL" class="cat-xref">Kinds of men</span><span class="scat"><span code="NGFA" class="cat-xref">Men and women</span></span></span><span class="mcat"><span code="F1KB" class="cat-xref">Unpleasant men</span><span class="scat"><span code="F1KC" class="cat-xref">Unpleasant people in general</span></span></span></span></span></span> <span class="def-block"><span class="def-head"><span class="def-info"><span class=C_SQU>■</span><span class=C_LAB><span class=C_USAG>offensive</span></span></span> <span class="def">a woman who is not attractive</span></span><span class="def-body">
    3 v- m" I: F3 g<span class=C_DCH>丑女</span C_DCH>9 N' W8 J3 P  q2 {/ O" G; G
    <span class="smartt"><span class="mcat"><span code="F1KA" class="cat-xref">Unpleasant women</span></span></span></span></span></span></span sense-block></span C_BODY>9 x! D  o3 n9 L! R# u1 v, h
    <hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />
    1 ]/ N5 U$ g: r4 C1 u<span class=CHW>dog</span CHW> <span class="di-info"><span class="posgram"><span class=C_POS>verb</span C_POS> <span class=C_GRE>T</span C_GRE> <span class="C_GW">FOLLOW</span C_GW><span class=CD_CH>跟随</span CD_CH>- e1 F7 c0 L. n8 b  d" U
    <span class="Spron-uk" data-src-mp3="C-A-Muk_pron/u/ukd/ukdoc/ukdocud022.mp3" data-src-ogg="C-A-Muk_pron_ogg/u/ukd/ukdoc/ukdocud022.ogg"></span Spron-uk>; A) i2 q- T. v- J5 d' v
    <span class="Spron-us" data-src-mp3="C-A-Mus_pron/d/dog/dog__/dog.mp3" data-src-ogg="C-A-Mus_pron_ogg/d/dog/dog__/dog.ogg"></span Spron-us>
    2 G5 b5 W# a. N3 z! M: X; B<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    ' F( A. p9 G% [" H<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> <span class="irreg-infls">(<span class="inf-group"><span class=C_INF>-gg-</span></span>)</span></span>7 t# c: K; q. p0 o6 i; j$ d
    <span class=C_BODY> <span class="sense-block">
    * G  O5 y' k2 {) H1 Q: f<span class="sense-body"><span class="def-block"><span class="def-head"><span class="def-info"><span class=C_SQU>■</span></span><span class="def">to follow someone closely and continuously</span></span><span class="def-body">* ^9 d7 z( ^& y2 V
    <span class=C_DCH>跟随;跟踪</span C_DCH>
    3 l4 s' p5 [) l) H<span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>Reporters dogged him for answers.</span><span class=C_CEX>记者们跟着他让他回答问题。</span C_CEX></span>
    : n/ w& ?  x, S5 J. }<span type="See_also" class="entry-xref"><span class=C_ARR>&#8658;</span><span class=C_LAB>See also</span> <span class=C_x><a href="entry://dogged" class=C_REF>dogged</a></span></span><span class="smartt"><span class="mcat"><span code="DK" class="cat-xref">Pursuing</span></span></span></span></span></span></span sense-block></span C_BODY>
    & U/ m3 R) ]7 m( {- E' L( X<hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />
    & ?: s. r9 q9 m4 f# C- r<span class=CHW>dog</span CHW> <span class="di-info"><span class="posgram"><span class=C_POS>verb</span C_POS> <span class=C_GRE>T</span C_GRE> <span class="C_GW">PROBLEM</span C_GW><span class=CD_CH>问题</span CD_CH>
    8 s1 M+ v9 Y3 T7 p<span class="Spron-uk" data-src-mp3="C-A-Muk_pron/u/ukd/ukdoc/ukdocud022.mp3" data-src-ogg="C-A-Muk_pron_ogg/u/ukd/ukdoc/ukdocud022.ogg"></span Spron-uk>
    ) v# c# k5 A1 ~8 T<span class="Spron-us" data-src-mp3="C-A-Mus_pron/d/dog/dog__/dog.mp3" data-src-ogg="C-A-Mus_pron_ogg/d/dog/dog__/dog.ogg"></span Spron-us>0 e/ _. G2 \! w, b+ Y' I! B/ ?: B
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>3 u, Y2 ]* B, f/ d* I) U
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> <span class="irreg-infls">(<span class="inf-group"><span class=C_INF>-gg-</span></span>)</span></span>
    . v, R3 j3 w9 N% ~5 [+ D<span class=C_BODY> <span class="sense-block">4 a3 K. m% V- M/ n
    <span class="sense-body"><span class="def-block"><span class="def-head"><span class="def-info"><span class=C_SQU>■</span></span><span class="def">to cause difficulties</span></span><span class="def-body">
    ' v: i7 z# c: I: N! V5 ]0 @<span class=C_DCH>困扰,阻碍</span C_DCH>
    * |# Q. R. m; Q<span class=C_EX><span class=C_RND>&#8226;</span><span class=C_EEX>Technical problems dogged our trip from the outset.</span><span class=C_CEX>技术问题从旅行一开始就一直困扰着我们。</span C_CEX></span>3 {: X7 j: G8 o6 F
    <span class="smartt"><span class="mcat"><span code="FeN" class="cat-xref">Inconvenience</span></span></span></span></span></span></span sense-block></span C_BODY>- p3 w$ m( b: g- g% M- F
    </>. D7 D& A8 q' A
    给你部分demo内容。。。
    / S$ ~( ]' y, l' _

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑
    % S8 e8 L* Q4 s& @" i1 G, J" q
    bt4baidu 发表于 2015-9-3 15:36
    7 Z3 {4 u% Z' t, v$ ~( @https://www.pdawiki.com/forum/fo ... &extra=page%3D17 @3 S; F6 d/ L; |% ^
    里面的动态功能都是 ...
    " L( T! c8 b* B& D
    " L2 \5 D( N. h$ K7 b8 J: K0 I0 }1 L
    已经修改了online demo,加入了对内嵌JavaScript的支持。: L+ h. j( U: |( {
    4 O6 p6 c4 `5 d, u1 S
    关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。; g* x6 b+ J# k% ?, X' a
    不知道你有没有兴趣一起开发?我想做成这样的
    $ Z2 q7 O& \- E4 I. d7 G8 chttp://www.hi-pda.com/forum/viewthread.php?tid=1210672; C/ n7 k2 A7 o* x/ q
    , K  }, U# Q" V' K

    & h) L- R; Y7 y( A0 }: n: b; ]0 [: f有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
    % |! {; R6 d/ ~, y4 F" I9 I

    1. ) y1 _/ e8 B# u% a
    2. (function _my_code(window) {
      0 A4 d) }6 ~+ r  ]; C1 O  N; T: r
    3.    function u(c, n) {..}
      / x7 _$ i; f8 m& r$ K0 t0 t
    4.    ..  
      % y1 F0 [$ n4 |( H  }+ t7 U
    5.    function w() {..}8 Q7 X; U* P, Q; v9 V' I5 g
    6.    var F = 0;9 d9 F. p3 t& J5 P

    7. 7 m8 d. q2 W+ y( w' K
    8.    function i() {2 T+ J0 x$ M. V
    9.      if (!F) {! w6 k4 k; V- o$ c1 R* c$ C- O# k
    10.        F = 1;, j  A) n$ R4 n/ E' h# t# l# d
    11.        w();3 D4 ?+ p$ Z$ C5 ~! c
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);% }* a+ x' ^1 s6 K
    13.      }" y5 W9 z0 l- z' S4 K8 j- z$ r
    14.    }
        h; W! B; F* ^* m
    15.    if (window.addEventListener) window.addEventListener("load", i, false);
      ( K4 ?( b+ V  r4 C) }
    16.    else window.attachEvent("onload", i);
      8 I9 A2 h. s/ B" m
    17.     ) P# v8 a* r# m$ L5 g
    18. }) (this);  /* In global scope, "this" is the window object. */. L+ Z; r# i. _5 m+ P8 u6 F5 a: c2 [
    复制代码

    * V- v6 s) T( t- i! g/ E& F; k; Q' g" J
    具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。3 o3 |" ]% a4 E2 \$ l
    & X+ ^  \0 p. W3 k: _1 j( ?
    另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 - x5 i3 L2 U; g( C; w7 G- E

    ; C7 k  S0 O, E( z2 V) t. D2 E
    + D" C  l. o0 o! \2 K) O2 e- I
    5 I8 K" Z/ \+ A- _! a+ _2015年8月5日 11:17:33' i" k& |( i. P4 J4 X
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。
    % k. D% \# a7 @% x. m% k<del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del># w0 s! K. Z) c( E' Z

    0 `; m7 J4 N5 [, _0 t* G; A

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:12
    7 K( h3 A, M% S7 I" R想法相当赞啊,不过刚试了,貌似还查不了词噢。
    0 ]2 V1 q: R5 O8 S4 i, X  D$ l( o
    ; M, H) I1 Z8 ?8 D; G
    可以查字典。6 p3 e* f: W& i  a0 g

      }& h7 q7 T- D5 O4 ]1. 需要先选择本地字典文件。
    - Q" J9 n5 ]: Z$ W/ Z) F3 e7 o4 P2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。
    : k# x! p& K" Q. I$ u" d3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑
    : n% r* Q  q( Z  D& w% \6 P: F
    Oeasy 发表于 2015-8-5 11:12
    % ^, V, v& N$ k: B& g' f, Z2015年8月5日 11:17:33( z9 _1 q" y5 }' E' |$ O
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...
    5 z# X: e( }$ N5 Q2 x. x& ?  ?
    1 y% M$ K+ w8 A0 _
    出于安全原因,浏览器是不能自动加载文件的。不过插件可以。
    # S' C6 l. w! i9 q/ B$ G
    8 P, v4 {! G+ |; `7 z! ?+ i关于排版,正在考虑允许同时选择CSS文件。
    9 i. n6 ~: S8 J8 ~" [9 r6 d4 K4 x0 g
    $ _* ?! d/ }! P! _' pIE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 11:47:16 | 显示全部楼层
    <span class="C_ENT">dog</span><blockmark></blockmark></a><a href="entry://#C_hkz1" class="CP_OS">noun</a> | <a href="entry://#C_hkz2" class="CP_OS">noun</a> | <a href="entry://#C_hkz3" class="CP_OS">verb</a> | <a href="entry://#C_hkz4" class="CP_OS">verb</a>
    ( ?. L, h* V7 e0 F3 C) Q3 F% h内跳还是有问题。。。
    ; C" P0 Q. b. o% ]没有再分析或直接替换成#C_hkz4

    该用户从未签到

     楼主| 发表于 2015-8-5 12:13:37 | 显示全部楼层

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑   O3 y# m+ j- D8 s9 k
    peterdocter 发表于 2015-8-5 11:47
    : v0 q! w  ]+ Ddognoun | noun | verb | verb, U0 b! n# b0 [3 |. Z4 W1 B9 b
    内跳还是有问题。。。
    $ c9 i8 L7 a7 U+ u9 `* X- _  D4 g没有再分析或直接替换成#C_hkz4
      A2 w! w8 d1 p( G9 x8 h2 ], C

    ; e$ x1 n0 r# L, B+ T3 D谢谢意见。+ m. S. [) h9 T5 b% J$ i6 d, n

    $ A" p. D/ x: C& |3 |含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。& R; W/ D  h7 b; h

    7 S/ s8 y2 L6 S0 w& V3 X% t我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。% }4 i) e5 f, [# b
    我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:13
    8 K+ l! V. z% J; `" d谢谢意见。
    & m5 S0 U$ Z, j/ I8 [% X2 z% ~3 S
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    ! t& o- B3 F6 _! D6 j2 k# e7 @
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51
    0 p6 b1 T8 {; Y- Uhttps://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    + D5 Z9 v% F* u/ g- m" n您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页内跳转的项目。可否请您再确认一下,最好说明一下页内如何跳转的。

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03
    ; r' t) n7 t) c( D  X  N' J2 U9 h可能此词典作者还没有公开过吧。。。
    7 \, M# x6 M( A! Z$ Z* q& I) E" B2 x' S6 @! v& B4 J
    dog
    . F* i! G$ k" I

      u2 D+ k- L9 L谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。( z9 d7 z$ R, Z4 Z6 J( U

    ( Q' a+ F5 E) x, D% c您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

    发表于 2015-8-5 17:09:33 | 显示全部楼层
    wow!,测试了一下 真是激动

    该用户从未签到

    发表于 2015-8-6 08:09:24 | 显示全部楼层
    ( y1 M8 A9 G1 w/ ~! N4 o

    2 B& G% n  `# i2 p- Y7 g& M/ b, T感谢楼主辛苦工作。% m+ X3 M. T" _! |* r
    反馈一个。: D) V! {6 n; w2 {
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。
    " M1 t+ c! {8 s" F0 k6 `$ G如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。3 k/ N& Z1 [* t: n; F. H' E
    $ a0 W6 v: |" r7 @4 ?, W
    ! o- R  F2 \9 m+ o
    . r- D1 Z* w% T* L1 ?

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑
    ) U2 U* ^5 T  M  }  h4 G; N% w
    Oeasy 发表于 2015-8-6 08:099 z. r2 q5 g7 _
    感谢楼主辛苦工作。
    % b/ u$ d% _; q5 G0 m) K2 S& j反馈一个。) A+ a- a5 U" c0 x, E- @3 E
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...

    & F4 l4 F( d3 D8 t& ~$ B6 G9 N% E6 [2 P! @6 z+ M" q$ F) f
    这只是个概念验证/功能演示版,离完工还远着呢。
    0 O/ _6 H/ a9 Y1 C7 ]3 d  a现在专注修改核心,界面等有空慢慢改吧,7 v1 b" K2 l% q, g# R5 Q
    真希望有UI/UX经验的同道加入合作。! ?1 R, }: }+ Y

    9 G  N4 U, C; z8 B2 ^5 y/ q/ a具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

    发表于 2015-8-7 00:34:55 | 显示全部楼层
    语音方面,建议支持mp3格式的mdd文件。

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34/ D$ k& e2 N  m4 _; C
    语音方面,建议支持mp3格式的mdd文件。
    1 s9 O- Z0 T1 h2 [6 A5 B5 `
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。
    . C2 u0 ~' U& B9 ?
    & \2 P6 T, ~% B; b不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:41
    . W: K$ e0 C) S' U3 S! a$ \- Z谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。3 G1 c$ S5 M! I) u9 r
    - i' ]* I+ Q* Z2 }
    您可以在顶楼提到的MDict on ...

      a" u6 x- [; v0 P- J不错!不过还有一个bug' Y3 F' U$ t% [4 C/ m( E: W: z: I
    <a href="entry://dogged" class="C_REF">dogged</a></- b' ^+ L& B( ]' z- f3 {5 {$ h
    没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑
    1 t2 J2 v& g& \, C- x' h2 i- D
    peterdocter 发表于 2015-8-7 13:03
    6 D( ^* a9 Q1 t& p, t% b- C不错!不过还有一个bug
    & U- J* e& i8 D  |' l7 t) ydogged
    2 Q) U) h" p$ S0 E7 X1 z% `% k( K3 a3 E

    & o: L' e% W5 |% {5 Y1 u这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。. q7 [: A. Z  S6 `! Z& t
    5 j6 U- ^# e: l1 |- I
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。! \- X4 J- y7 A  p) _
    2 P! G# d# B+ k
    不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。" F6 c1 }; I% L0 o, ~+ `3 |

    + S% k% K% @% F已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    ! |( B3 a2 ~) ~+ N! f/ D6 K这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    * p; `! L  i' t/ M8 L
    4 f6 J2 `0 K2 O! d3 I# j当点击形如 entry:// 非页内跳转 ...
    # d2 d6 b6 O- ~$ |
    再给你demo调试,而且可以连跳了
    ! S9 F# J0 A: G1 J3 D2 ~( ?

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:189 c$ E# j7 g$ I' ]9 U9 h0 v( ^0 D
    再给你demo调试,而且可以连跳了
    % O# F3 R) i" ?: R9 ^" F
    我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。3 J! Y4 Q. q& x

    , a! d! [4 Y2 t5 ~另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?0 N6 ^* h8 n7 b) w" o

    0 o5 K2 T' r6 v6 Ydogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。
    # ]+ r* |0 X2 y5 O3 g* i- a) a& B8 I; c2 {
    回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑 0 Z3 T# C) P5 i+ [3 f
    + x! s. \) k7 c0 o
    支持!* P4 v1 f! h  m. u" @' k
    原來樓主就是因為Chrome插件而開發的
    2 O' u* f! M+ }+ ihttps://github.com/fengdh/ChaZD/ f* J) R, @7 t7 P" a& X
    $ f% ?9 J+ M& \& d: L' t7 T
    今年度有可能融入到插件裡嗎?

    该用户从未签到

    发表于 2015-9-1 17:51:28 | 显示全部楼层
    词典里面有javascript脚本的话,似乎解析不出来

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51
    / [6 t+ E" N: u; |2 l6 _* t词典里面有javascript脚本的话,似乎解析不出来
    % X2 E1 }" q5 i' |
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:27, n+ k0 ?0 t8 z9 a7 U3 x
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    , o5 d( Y, ^4 Y9 R% R& phttps://www.pdawiki.com/forum/fo ... &extra=page%3D1% E3 ~) ]( y5 P2 }7 v
    里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-4-25 00:29 , Processed in 0.069432 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表