掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5208|回复: 35

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

[复制链接]

该用户从未签到

发表于 2015-8-5 11:05:40 | 显示全部楼层 |阅读模式
本帖最后由 fengdh 于 2015-8-5 12:49 编辑
; l0 c& g: P& P' j- k- J7 A+ X% E& P. r4 x
我并非MDict深度用户,不过因为想为自己开发的浏览器插件提供本地离线字典功能,结果用纯JavaScript实现了一个MDict解析器。这个开源项目现在仍然开发之中,大家可以去 http://fengdh.github.io/mdict-js/ 围观,欢迎提出建议。这仅是一个在线功能演示,还不是一个MDict在线字典的完全实现。它没有服务器端,仅仅通过网页形式提供所需的Javascript库。需要用户从本地选择mdx而且可以附加一个mdd资源文件,因为不会上传服务器完全在本地解析查询,所以几乎是瞬间得到结果。现在可以支持图像/语音/简单跳转/模糊查询/mdd内置样式文件等等。9 D, v6 T2 ?7 H' ]5 t+ @  b

' i& J$ g0 x+ y4 B. l我用手头的LDOCE/OALD/Webster/American Heritage/WordNet多个版本做过测试,字典和资源文件支持词条索引加密但不支持需要注”册-码的索引头加密,支持文件压缩(gzip/lzo都可以)、词条链接、语音(wav和spx,需要mp3支持吗)。暂不支持超大文件(>4G,离线维基?)。暂不支持Stylesheet替换(还没遭遇过使用这个功能的字典,哪位可以提供个实例就太感谢了)。只对英语和汉语词典测试过,不知道其他语言有没有大问题。) M8 U& S3 ^% ?- E$ q1 S5 T/ ]
5 |1 b; x% _2 S( p
我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。
# C$ z5 }5 ^( ]7 R4 U. `$ t* M4 ~* C- Z( J7 ]7 A. R
忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。& v+ I3 i; w; g& `, Q" `/ C6 w9 q- A
" s6 z& e' |* L, f1 T: w' p/ s4 Q' x; b
谢谢。! D; |5 s' T# o% Q" s
9 n7 x9 p, _( @( S" C: L
2 B3 |, D2 g( g1 L1 \; U
" G. y9 e6 ?4 p9 O: p

% ^$ a! C( H# Y$ J9 T6 n6 O, u9 y/ x4 b0 z' E/ A) L1 }
6 U1 @+ r# O# [. i6 O6 P9 I4 @0 M

本帖子中包含更多资源

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

x

本帖被以下淘专辑推荐:

该用户从未签到

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

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:041 D: U, g& z4 T1 y- t
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...

    1 Q7 [" P7 S, H% Q7 Z2 ~% B6 O3 A# V, @- g
    可能此词典作者还没有公开过吧。。。
    * q+ z3 P/ J# H9 A( b& z- G9 L, D: n5 t) ~  I7 _; k( Y. Y+ L
    dog
    ; ^1 Z" G# O& Z' C8 F  y7 ]<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>6 Y+ f/ v3 {( p% k' z/ O; j
    <hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />
    + y  l1 O7 V( d<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>% s% ^0 K4 ]: b) I9 J  d+ n
    <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>1 \$ j( W. I/ [! 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>5 {' i: Q5 I% U) }
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    # H! B4 u' j0 ?  u5 ]<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>) @" X3 u  E& N- e
    <span class=C_BODY><span class="sense-block">+ ?4 c, ]+ K; {
    <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">
    0 ?; C/ J: }+ F; @) F, C; @<span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    / y8 |# I& Z# w* s7 Q<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>
    : C  H: I# G. r1 F- ^, r/ \<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>
    ) J6 y. E/ ~0 x! c<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>, y7 P0 o" p0 S  q% S+ p3 [
    <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>
    1 \3 A/ t. ?% [' l/ g' S: c<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>
    * L% Y1 Z+ x7 T' B- B! i<hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />
    2 t8 M4 H# w+ R! a* z$ j<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>5 ]/ w: F# N+ R3 e
    <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>: i6 [+ i9 ^4 E
    <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>
    , H9 w# X1 |; E7 }" y7 L6 U<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    9 w: Q8 K7 c/ D0 V- \6 _2 K# R- y<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    % S' F% X4 f( ^! o% W% {, ?<span class=C_BODY><span class="sense-block">
    " ^6 E: b; ]) k  F' V<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">
    9 E- K4 j' H, o3 Z% n1 q1 ?+ ~<span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>
    0 ~7 G4 m2 S: ~6 }  ?# |; `<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>
      z4 {- U! b0 ]- X2 e<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">
    7 c9 l2 E' [( P  Z) S4 J/ C: x<span class=C_DCH>丑女</span C_DCH>/ A: e) v& m4 e
    <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>
    $ w; t) f) s8 M0 R: y- F8 ^<hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />% ]2 q, t7 l" v: g
    <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>1 i7 r9 o+ _' \8 n5 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>4 {, ?0 Z" I, i! }
    <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>5 H, r7 v6 m1 T) S
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>8 j6 f6 G3 J( A9 C' v6 n
    <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>1 C* A! L  ^+ S# H! o( P% B+ r
    <span class=C_BODY> <span class="sense-block">, A7 U; S: l( W! m: X% |) |
    <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">. T$ r' n8 v( |& z
    <span class=C_DCH>跟随;跟踪</span C_DCH>9 u! X- ?& }8 N) x1 b" p- w
    <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>5 \  v2 H; [! F* i8 r" {
    <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>
    ! b7 D; V, p! L, y/ B( x: W<hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />' p1 A% x5 t7 K  O9 u0 K
    <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>% n  @6 v  v  Z. Q
    <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>
    2 o5 z. ]: @7 ^  W$ O<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>
    . X/ C& h6 }" V0 N<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    3 B. l; B& \  ]; V<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>
    1 m3 M  a( s! _, N. Z; c8 |  v! O<span class=C_BODY> <span class="sense-block">
    3 h  P4 m! n' j' I6 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">! w1 {9 ?2 ^2 J/ m. z
    <span class=C_DCH>困扰,阻碍</span C_DCH>  l! [& }0 Q9 p6 a; [
    <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>- g7 [* r; F# ?; U9 ^5 H; c
    <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>
    . @! E# |3 z1 |2 O2 z; N</>
    8 _5 c  A0 @0 w6 H给你部分demo内容。。。
    4 ~; R5 H, T0 c: Y

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑
    ; G' Q9 ?+ B! \4 \3 P- j
    bt4baidu 发表于 2015-9-3 15:36
      U2 n1 ?- A3 E- W0 b" Xhttps://www.pdawiki.com/forum/fo ... &extra=page%3D17 Z/ |% ?4 s8 M  w( v' y  E
    里面的动态功能都是 ...

    ' T% z9 w; [4 \
    / o( J% f0 R& A( {, {% w3 ~; s3 R" V已经修改了online demo,加入了对内嵌JavaScript的支持。: Z# l& \' x  z  k4 g# e. c
    5 h, e4 s- |  Z( j
    关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。& Q; T0 {) R4 d
    不知道你有没有兴趣一起开发?我想做成这样的5 z8 x, Z4 f+ \' R3 `; X' _
    http://www.hi-pda.com/forum/viewthread.php?tid=1210672
    ; W6 v  D, c0 y0 C" c! o
    1 p  M9 ^3 o0 U! H, p# n, U5 |% \; _0 i
    有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:& H  ^3 p, l1 M, U" f, ?1 t

    1. 0 `5 s: m3 J% W% j8 z
    2. (function _my_code(window) {
      ; ]; x0 M" z, V  z
    3.    function u(c, n) {..}
        R/ w  Q  o9 S- A  l3 w4 |2 A
    4.    ..  / ~, _# g: }8 a4 r( {! ^
    5.    function w() {..}
      1 f. N2 P9 F# Q2 a
    6.    var F = 0;
      3 L% a/ G/ s/ A8 ?

    7. ! c  O0 C2 j4 v
    8.    function i() {* e( D5 B$ e* l5 F6 |
    9.      if (!F) {3 ?% M3 v+ R3 f! M. y6 ?, F- m4 O
    10.        F = 1;, ^5 D: H- Q" T. ?% X" k$ l+ p- s
    11.        w();
      ! X: }& p+ O/ Z, n( m
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);+ m3 r# _' w. a4 x
    13.      }
      $ I0 A- T1 T. @
    14.    }
      # }# T2 S- c" ?2 _8 }- W
    15.    if (window.addEventListener) window.addEventListener("load", i, false);
      / E0 \( G* N8 E1 H' A
    16.    else window.attachEvent("onload", i);
      . I, g) A( i  Z5 M* S
    17.     # b" }1 H; E+ R3 p1 C2 a
    18. }) (this);  /* In global scope, "this" is the window object. */
      ) s! ~2 I& o. c9 g* S: P5 a" ^
    复制代码

    7 ?' K9 S) N# K+ u. ^; q9 d% [) p7 r/ U! F
    具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。: u4 D& m: L3 D  E6 J3 I# j

    & w! \+ B+ ^3 [9 C* q% S- E+ ?另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 * h! V/ v% K; P# J4 {% _

    $ L: [! A! @8 Y% O6 I' j7 x  e. X
    4 b8 w9 U. {6 _3 U; s
    & w4 p4 Z1 W9 W% @: k2015年8月5日 11:17:33. b, k% |+ F5 V1 E
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。6 ?! n# e+ P2 y* E. `# q; C+ V
    <del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>- m( J1 S  {" q/ j

    ; Y8 n5 a* C7 i, B2 |5 w4 [

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:12) F- v, _* k1 o5 l$ P% F
    想法相当赞啊,不过刚试了,貌似还查不了词噢。

    ; @* i: ?" }+ a% h, S- n
    0 a# e; n$ G9 y9 w可以查字典。
    . I. n! R! i( V$ K7 Y6 N9 l1 c8 K1 Z4 O2 q5 ]4 m% G
    1. 需要先选择本地字典文件。
    0 }5 A1 e# y% w9 a8 ?( w6 H+ B2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。0 O& O) e0 I7 n, s8 k
    3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑
    3 G4 b, X7 K+ M1 p# e
    Oeasy 发表于 2015-8-5 11:12+ [0 J4 x+ y2 I7 O2 |7 I7 L
    2015年8月5日 11:17:33
    4 N" R8 Y& f) ?, M7 F换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...
    9 U, M* e) N6 M' E6 @
    % [) j6 _1 @: C. e7 u' Q1 i
    出于安全原因,浏览器是不能自动加载文件的。不过插件可以。2 N* V6 z$ g& W& r6 O5 f
    3 ?' G; I7 V3 n" T; w
    关于排版,正在考虑允许同时选择CSS文件。
    + D7 X1 X2 N7 n6 s9 f& ^  ]
    4 a- I2 q: e, F$ n  Z$ p3 rIE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1909 天

    [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>- K9 k6 e1 S# i( Y
    内跳还是有问题。。。" ?) k- q, Z/ l
    没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑
      H3 _6 G& j9 ~8 Q) k6 k. t
    peterdocter 发表于 2015-8-5 11:47
    & E: b* C  T1 n! \dognoun | noun | verb | verb
    7 P& b' o1 |" W- Q0 J9 |. }: [内跳还是有问题。。。
      v3 k* K$ M% b1 j: f没有再分析或直接替换成#C_hkz4
    - O2 |. m% O! q

    2 J9 a' m7 L* Y  h+ n谢谢意见。
    , D! T% `% T& d5 F" {, _0 |0 r) u: {( v+ k9 A
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    & x+ w2 B! Z, I* `% W6 m8 g1 {/ P1 l" X. u
    我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。) u0 a% u1 @9 g- K8 f
    我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1909 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:13
    & u5 e" E) ^9 ~谢谢意见。
    5 u4 [6 {/ \! v" ]! h' y. ?
    : ?8 [3 v. Z4 j* X2 T含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    : K  `8 q/ ?5 n7 A+ E
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51
    2 M: z, S, M0 S6 @https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    5 H4 V1 U$ H4 R您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页内跳转的项目。可否请您再确认一下,最好说明一下页内如何跳转的。

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03
    * x& V2 @' Z" |+ s5 g) z可能此词典作者还没有公开过吧。。。
    1 b- G# |( o/ P
    $ `( D0 [/ `5 t( W1 [, Y% P. ndog
    6 v3 _/ E+ ?7 r' C
    6 d, p  v/ H9 N6 v  u0 c+ z
    谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。: ~7 r/ o  P5 m7 I

    # d/ B1 b. f9 X您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

    发表于 2015-8-6 08:09:24 | 显示全部楼层
    1 w5 ~3 s" f; I  o
    6 h/ g9 ]' M- h: e  r/ L7 ^( s
    感谢楼主辛苦工作。9 }; d8 ]+ @& T) V
    反馈一个。- Y  V. P+ h) r# Z7 p4 r% v& |! x
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。% B6 [& I- d* Q- l
    如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。, \0 y( r/ ^  O& P* ?2 s8 s: \

    % a  x; V7 Z$ h! y8 F
    9 _; [0 _9 e8 c, \3 ~) E; J2 l, e2 p

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑 : X6 `4 R7 [5 I3 H
    Oeasy 发表于 2015-8-6 08:09
    ; d: q9 Z7 ?) J) T感谢楼主辛苦工作。
    7 x4 Z# ?# b# J% g% E3 D" Z7 w反馈一个。3 W( e! z- S* M: p
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...

    6 k& c2 P4 ?, w, ~" e# s$ e2 T( I1 }# i' [# p" r  ]5 C/ y
    这只是个概念验证/功能演示版,离完工还远着呢。
    ( I, \, d: ~1 U6 T9 z% t现在专注修改核心,界面等有空慢慢改吧,' I; |: s% P9 R$ ~. Z: c% ]; j& [
    真希望有UI/UX经验的同道加入合作。
    " c' ?& b. w; E" E6 u! M! X
    & C& \& }; o3 U具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34
    , q& E; j; z' b, q+ Z0 m% w语音方面,建议支持mp3格式的mdd文件。
    2 D; A( l( V; O* J) A
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。+ M/ J! _( K4 K4 D* }

    0 p9 X0 N, M0 I8 t/ z, E9 E. z% L( N不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1909 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:41: x( o# X' Q. h% M" z3 k/ T& ?
    谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。
    3 {$ H4 j, T/ s* O3 S8 I/ n, M2 U$ i3 @: A) M% m$ c( ]( G
    您可以在顶楼提到的MDict on ...

    - s6 B7 C3 o$ `# X7 m5 A不错!不过还有一个bug: o7 X1 D! d( g8 `5 T7 l9 j
    <a href="entry://dogged" class="C_REF">dogged</a></8 y: I* y  U6 }* Q0 d
    没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑 ! H) y+ a1 A7 H  o* x
    peterdocter 发表于 2015-8-7 13:03
    ( w2 l: Z* x, V5 b) D- m- I不错!不过还有一个bug: j9 I5 H' F1 l' m. g
    dogged
    5 R( G6 z7 ~( `4 g" F
    - Z" E# g6 {0 Y
    这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    + `. @  ?( l7 F9 K- W2 W2 D+ {1 t8 h- h' ?
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。
    * g0 i1 O1 ~  A  e. o* k# y
    4 j# h7 z) c8 a: v8 u& ]7 B$ g不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。: v( I7 K& A, I* \- U
    / L* `$ o' E" N" t+ u% J- M
    已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1909 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:112 o. q! V% R: n  K9 M9 n, N
    这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    ! W9 G, I* u7 M& }* I! N1 X% l( @$ ~
    6 }; A: P5 |9 {7 K6 o: ~& l$ u当点击形如 entry:// 非页内跳转 ...

    ' y: x$ U" q* u4 X4 k6 h$ l& Z再给你demo调试,而且可以连跳了
    + v7 K7 q: ]# D9 b. P( k

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:18
    * u6 u5 Q1 M, J  ?" u0 T再给你demo调试,而且可以连跳了

      Q4 T/ ]2 x% n1 m. ]我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。7 \( M- t; c/ ^2 w. t& F" Q
    & x, w( d* e3 P1 j" o7 x
    另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?
    % m) P- X3 f9 k( c$ x+ s0 i# |; K* v0 q
    dogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。
    0 v( K+ |. F9 n$ K) a, @2 k8 x* D6 A& l: E/ t: ?- {/ u& H
    回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑
    - O& L! @# M: U( e! N: B! ~% f9 L1 H, l4 |/ c6 ^5 H- _
    支持!
    5 V; Z( B' y  C: J原來樓主就是因為Chrome插件而開發的1 ~0 L, e8 f" N+ n1 W+ ^
    https://github.com/fengdh/ChaZD
    , x% [- ]: E" w! }% X0 k
    9 H4 m; I3 N9 d* J  b5 i今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51. B& o; G8 I* Y, _
    词典里面有javascript脚本的话,似乎解析不出来
    $ q/ Q. H: R2 O: e; D3 [4 Z& H2 U
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:27  j- L& U8 O4 q; C
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    7 K/ H* H5 o9 rhttps://www.pdawiki.com/forum/fo ... &extra=page%3D16 {( ]2 E2 b( L* [% G
    里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-20 03:46 , Processed in 0.078496 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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