掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5250|回复: 35

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

[复制链接]

该用户从未签到

发表于 2015-8-5 11:05:40 | 显示全部楼层 |阅读模式
本帖最后由 fengdh 于 2015-8-5 12:49 编辑 % C4 f; V2 N; b; C3 [2 w6 R

/ _4 j& p; g% w  {6 @) O* u0 @我并非MDict深度用户,不过因为想为自己开发的浏览器插件提供本地离线字典功能,结果用纯JavaScript实现了一个MDict解析器。这个开源项目现在仍然开发之中,大家可以去 http://fengdh.github.io/mdict-js/ 围观,欢迎提出建议。这仅是一个在线功能演示,还不是一个MDict在线字典的完全实现。它没有服务器端,仅仅通过网页形式提供所需的Javascript库。需要用户从本地选择mdx而且可以附加一个mdd资源文件,因为不会上传服务器完全在本地解析查询,所以几乎是瞬间得到结果。现在可以支持图像/语音/简单跳转/模糊查询/mdd内置样式文件等等。
9 Y1 w) M, v8 M! ^+ B; j$ |9 x) j" N
我用手头的LDOCE/OALD/Webster/American Heritage/WordNet多个版本做过测试,字典和资源文件支持词条索引加密但不支持需要注”册-码的索引头加密,支持文件压缩(gzip/lzo都可以)、词条链接、语音(wav和spx,需要mp3支持吗)。暂不支持超大文件(>4G,离线维基?)。暂不支持Stylesheet替换(还没遭遇过使用这个功能的字典,哪位可以提供个实例就太感谢了)。只对英语和汉语词典测试过,不知道其他语言有没有大问题。
" m2 H' d7 k' V+ o5 K2 v/ {- R- S- W! L1 F; x; A7 A# p% `
我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。
$ Z% `7 l0 d  k$ K' G  p" r/ ]& I" T8 |% [) ^
忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。) g7 N8 o7 e% F/ I$ [9 y
7 J3 S2 I5 @/ s# {
谢谢。
$ `9 N& z8 g- H; W' n' C  t% Z, s  t7 c

# @6 ?4 W# ~; M/ A$ s# x4 I' n- k9 E, v# w$ B. q

5 w- ?- I( `' W( @8 ?( ^) ~2 P! R+ R: b
0 o$ x& B! h$ l% t# M

本帖子中包含更多资源

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

x

本帖被以下淘专辑推荐:

该用户从未签到

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

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:047 W3 V  z# ?% a9 p. I6 r, L2 a
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...
    ! |# ~6 S7 G2 f1 j4 Q6 P
    4 ]* y# S5 f& F4 a5 ~) j6 ]
    可能此词典作者还没有公开过吧。。。
    & p% O1 }% V3 Q& ]+ S3 f6 \8 l) M% k, e0 a7 t* V; N1 _( i4 v
    dog
    ' z/ ?1 R& {( G4 L. O0 a<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>
    " r! [+ m5 y: M; b6 K' M- Y<hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />
    ' m) `& i7 V/ p' W3 o0 h! f<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>6 W2 K. t/ t" H
    <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 E* E8 P# L% s7 n  A<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>1 h2 A4 `& z* i5 G8 R1 L7 p- ~, Z
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>7 d2 d" f* X% z$ h( ^8 [: B
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>3 p9 ^: i( L! y9 R
    <span class=C_BODY><span class="sense-block">
    ! A* K5 B5 _. ~6 ]: H<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">$ f2 S' D9 H! s2 e$ s: c; q, d! i
    <span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    9 V4 I0 w5 D( A" ?: h) \$ [% K5 n<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>  L6 E$ h7 j3 S1 J& F" s3 |6 Y/ D
    <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>1 f; N; y# F& E! f# {( [
    <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>
    9 g# k  I% k( N7 ^) x<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>
    # [4 V2 E8 e/ P$ _6 B9 U  r<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>" X# ?0 L/ u/ u$ ?5 R
    <hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />
    4 m3 ]7 b6 I; z" j$ F, T: R<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>% q) V4 c. N  v# _- J9 \
    <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>
    + I$ t0 l% s  k8 M$ ?  J/ c<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>
    ; P' Z2 Y! x2 E8 S& f<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    " D( m9 }+ f% F% r$ h5 w% O0 _<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>8 u8 ~# ?! p% Y9 U9 ~
    <span class=C_BODY><span class="sense-block">
    4 d6 r9 H( }$ _  n9 ^  K! o# d<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">0 l$ V2 M/ o8 Y% `! [! f
    <span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>
    ! N1 ^' s" ]- D; s8 f+ y+ x1 L<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>
    2 B7 N. O2 e1 q1 I9 Z, F! A; G+ @<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">$ R) c2 l+ J8 E  V6 g/ ]2 m
    <span class=C_DCH>丑女</span C_DCH>
    # m6 P5 X* f9 o: w4 y  i( f  H<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>
    5 \  n/ Q" F) U! }; O( p  m1 s<hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />6 D) Z7 r  R, Y$ ?, F" c. y, |, ~
    <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>
    7 {  o# W4 }0 @* ~! q/ j( K! L<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>7 Q* j( T0 S, p
    <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>
    : A# V2 g4 q' C2 z4 G3 Z<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span># ]; _6 l0 A1 W9 h9 w9 p3 ~
    <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>
    # h( J6 b2 C) n3 _<span class=C_BODY> <span class="sense-block">
    . u# ]: A% q) b  v. C( f1 p<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">
      I7 b  @( w5 j- ?3 w<span class=C_DCH>跟随;跟踪</span C_DCH>
    ' O, {+ y. [( e4 o# N$ }# I9 r8 O<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>
    0 ?* C, a' [' e, k. P<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>
    ' S' O' B6 w* n6 ^  Q8 S" A<hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />
    1 i4 q2 A; _; `) X$ g8 N, s" X<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>- l7 K9 I4 {* I
    <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 d/ [# f; j$ _" M<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>, e7 s& u$ x% W# A, `" ~
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    * X6 \4 V' f! f: e# y3 q1 @<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>6 m4 |8 B: l& Q# H0 A! v
    <span class=C_BODY> <span class="sense-block">
    8 ?* Z' h7 R" ^! A% G, Y<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">2 J+ L3 t6 A5 z
    <span class=C_DCH>困扰,阻碍</span C_DCH>1 i0 n$ j$ p- @: @
    <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>( ]# [% H$ K( {4 _+ c- A, [
    <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>0 i7 v, g9 C9 o" d; l/ s/ B5 `' K
    </>
    8 _, n. p. f- t0 d% d/ s/ q给你部分demo内容。。。
    0 C) w; R8 `/ n' ]8 b1 Q, q

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑 / c' e( G/ k' l1 j
    bt4baidu 发表于 2015-9-3 15:36' J% E" Q# f7 Y7 ^9 W
    https://www.pdawiki.com/forum/fo ... &extra=page%3D13 c% ^' y- u' n, V. U2 _( |' W
    里面的动态功能都是 ...
    ; O4 p7 Q( M7 |
    7 h$ v, a: z  m4 h: ?
    已经修改了online demo,加入了对内嵌JavaScript的支持。& G5 \3 z+ W7 ]0 m6 y) _

    6 e% ?% Y- l6 v关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
    & B5 u- i4 F, ]3 Y  |. ?# y, _不知道你有没有兴趣一起开发?我想做成这样的
      e8 e! h, I! t+ ~3 Chttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
    2 V7 k5 w1 e- F  W* L  j7 K% j& I' C. }8 q7 e3 M6 O; K
      r" J. c& F% l% }/ F  n! y
    有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
    ) V& E, l* i6 {
    1. 3 q: a/ k! p3 \4 [  A
    2. (function _my_code(window) {5 G  R8 ~0 {, _" W% c& W: h5 J# n
    3.    function u(c, n) {..}
      / D$ m* ]* F; y/ h2 {7 Y+ N) x
    4.    ..  ( P" [1 K0 Z3 @# w% A6 c
    5.    function w() {..}& h' W  C- H: j! K5 T. s
    6.    var F = 0;* X% \. V# W9 N: T3 i) ~
    7. # k2 {, t8 q& g7 w8 N, {
    8.    function i() {6 Z& Q% c. E; V* _( ]0 E
    9.      if (!F) {
      / x* e+ v) s" ?: j/ |6 m
    10.        F = 1;
      ! ]  F# H) W  e$ B$ ^- N
    11.        w();; ]* r$ g4 X8 b, n$ ?: I
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);4 S) ~$ I. Q3 T. A
    13.      }% L% h1 A4 W* H* V: A4 f4 M. H
    14.    }
      ( R4 z9 @7 B3 ~7 ~1 _
    15.    if (window.addEventListener) window.addEventListener("load", i, false);$ \+ O: [1 k. d" ^/ d
    16.    else window.attachEvent("onload", i);
      1 `+ Q. K0 g* G/ _4 r3 I+ @
    17.    
      8 n& f' @, G$ C: L& ]! \& x
    18. }) (this);  /* In global scope, "this" is the window object. */; A% K9 L! W$ Y) r& |
    复制代码

    ) }1 M6 S3 r2 j- f. [/ F5 D
    ) U0 i. T4 \7 w& `# z2 P具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。( ?. G: Q, ?# Q8 n2 A# _

    / o9 B% C( j! v  d2 w另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 : H  P* i3 O; F4 O

    ) v( M6 W& m8 [9 L/ f7 w 5 v* r+ u8 r* s$ T- u# C, {
    . ]. z; h5 J6 c- e# ^$ ^3 r& u8 _
    2015年8月5日 11:17:339 m  c4 p6 o  D3 [3 [3 O
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。! e6 W2 Q# ?/ e( I' U; T, d
    <del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>
    5 D' G1 l5 d3 m9 T7 e7 b
    ( H* p0 ~* B- r. {) l; }

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:12, S* ~& [% S) u5 B9 ]. q8 A
    想法相当赞啊,不过刚试了,貌似还查不了词噢。
    6 q/ a) A  Y! @$ P) W& E3 r* r# Y

    * k6 |1 s, F8 r可以查字典。
    % E1 T: q9 ]6 S# r) y
    + f& i% _; j) M# d: e5 R8 _1. 需要先选择本地字典文件。
    % ^' T! a& y- N8 K7 {/ q3 s2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。
    $ {: E' S/ g5 c- Y3 h! O+ S* V' r3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑
    ; Z* E7 a" }; J$ L8 r
    Oeasy 发表于 2015-8-5 11:12
    1 S) j, u6 A. T+ B7 m2 ]2015年8月5日 11:17:33
    # o( y" Y! ~2 z& e# c' q换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...
    . h/ J/ `4 G2 o& J% M2 o
    ; x6 o9 z* k+ M
    出于安全原因,浏览器是不能自动加载文件的。不过插件可以。
    6 y( q0 _9 f1 d4 p$ O3 p2 [
    ; Y/ y9 |; @# w关于排版,正在考虑允许同时选择CSS文件。
    9 x" s, o+ `' X, Y: i4 Y/ A; C& C+ X$ F$ o& V- A7 ~
    IE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 1916 天

    [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>; K" S" A1 f" E
    内跳还是有问题。。。
    ; J5 d3 Y2 J* D# y' {没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑 0 Q! c; R7 R7 G$ q) v" i! I
    peterdocter 发表于 2015-8-5 11:47) {1 L0 ], M8 \" [0 X
    dognoun | noun | verb | verb& e7 m6 h3 ~# w' a- R' D
    内跳还是有问题。。。
    6 |7 Y; ^! S+ S( P5 A没有再分析或直接替换成#C_hkz4

    4 R; e! [) Z& [4 G* @: W' h  k* {# e  z5 o, w# |
    谢谢意见。
    - m+ v. e( T: V, y% n- {* X$ _* Y" }
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    5 @- }/ d1 J3 h0 Q- ~/ n
    4 e* Q5 R' y! D0 \( K9 o1 l2 `我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。
    ' z2 }5 ]7 B% I5 Q) s我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 1916 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:137 W& p7 t( S  r- b; e
    谢谢意见。
      N2 |" R7 x3 ?2 F% L3 E
    & A! D  H/ ~5 Z0 a5 ~( {3 G含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    4 {. ~- z2 W7 M/ ^
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51
    1 I7 Y! j6 {: v% ?! X; h* thttps://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117
    7 E' N2 l! b; N$ [
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页内跳转的项目。可否请您再确认一下,最好说明一下页内如何跳转的。

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03( W) H% V: v/ g
    可能此词典作者还没有公开过吧。。。
    # Q8 y/ \2 `2 R2 s  Q- r0 s7 P2 G% x' ^& ?
    dog
    ( L- |1 x# S! V# T; g0 O1 n
    $ ]4 X8 \, S( v3 U  l6 v, ]$ }
    谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。
    6 C6 m+ t& a3 L. x. W) J$ g4 J. r; i8 |: Z' d) K
    您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

    发表于 2015-8-6 08:09:24 | 显示全部楼层

    5 I+ U1 P4 ^- {3 B: P& V" z$ T; D: N" H' I- ]
    感谢楼主辛苦工作。! U0 e0 Y- q9 T  P9 m! Z( i5 w
    反馈一个。6 z: V+ g& Y$ `4 q/ s
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。3 W) t- `. f% t1 F: f
    如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。+ t2 u2 p& ]4 u

    7 [. B7 |% e" h- p- e. A9 \
    ( W6 K4 M5 o& l2 z
    * m0 l4 t. l! A; a5 E

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑 6 p3 Z' I: l, V: b
    Oeasy 发表于 2015-8-6 08:09; p1 P* u0 l& ]8 D, ]/ V& ?
    感谢楼主辛苦工作。
    4 @! X& ]( R6 n& L" q4 v9 J8 Z反馈一个。& |( ?" N! u, f
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...

    7 o' s. q* Y: Y: u) ~4 U" ]& P' a. I# @
    这只是个概念验证/功能演示版,离完工还远着呢。
    ' m7 A2 N- `* w5 K现在专注修改核心,界面等有空慢慢改吧,
    : {% p- p. r) U8 r7 D# z, U6 a) J1 W9 S% x* ~真希望有UI/UX经验的同道加入合作。
    $ N0 ]0 w+ ]5 M7 O6 h
    , e' l$ R7 W& p; v8 J5 _; j8 K8 k具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34
    * p0 |4 |) z! x5 d语音方面,建议支持mp3格式的mdd文件。
    ) L3 X6 b: b. j  p
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。
    2 e  P$ ^1 O1 j2 a
    * q) C/ m3 N' f" }2 x不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 1916 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:41
    3 {9 l/ L  v1 }' s# q! m: n谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。+ t9 E6 D8 H" j& S& G

    - @0 r. B8 |; A: o您可以在顶楼提到的MDict on ...
    : f; F8 W# B( `  K& ^( j8 R3 y
    不错!不过还有一个bug
    / u3 r8 G; [# F. _" }<a href="entry://dogged" class="C_REF">dogged</a></
    ) K0 O4 e8 H4 D! _. e, k没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑
    $ a3 X# r. }+ q& q
    peterdocter 发表于 2015-8-7 13:03
    ! o) w) ~" u( h. {不错!不过还有一个bug
    / A+ ]3 q% V" q( j( udogged
    6 t# ^) `5 H8 ^, p: M+ |5 I

    7 |$ M; E: K; m0 r# u6 y$ u6 L% t这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    . @6 S1 u( B) Q. B- T* [, ^$ w2 f9 @/ M" y
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。
    ) h  k. c3 m8 t% q! K; s! B$ |3 T, q* ^# {$ [
    不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。3 w% Z" w" u1 s4 o. h

    7 E4 \' C/ g* x! P, A5 L已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 1916 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    * I  o' z& x  X* w! @这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。' V6 d1 W1 [7 p  c7 z: k9 _! j1 n

    / E9 \% n$ f* y) x" D, l当点击形如 entry:// 非页内跳转 ...

    ' x4 U1 I+ s7 B+ H' {) B+ ?再给你demo调试,而且可以连跳了 7 u9 ~: z. w- o% j

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:18
    : U1 H# N% M( ?8 m( p* I再给你demo调试,而且可以连跳了
    $ |9 }$ K& ~# ^  K
    我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。
    % ]& p2 }9 i5 |% o1 X, s9 x
    ! V! K0 Q0 ?. _' `另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?
    " k$ f& A! z- q. _9 x
    8 A- ^" j9 `" e9 d! hdogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。: {+ [; o, X* }

    # A8 C. r7 a0 C+ y5 \  h# D回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑 . M5 E3 }: q1 D; v9 I& W

    $ D2 r1 [9 \0 A4 E3 E支持!0 g2 t& \$ |! J) g2 d# P4 q
    原來樓主就是因為Chrome插件而開發的. o1 b4 F, W' ]0 r/ k3 V
    https://github.com/fengdh/ChaZD" s) C# B9 c# z! t" T
    1 F  e; l* Q! L: F% {5 R6 I
    今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51
    $ W' q, H3 W( R+ @, E4 ~& w词典里面有javascript脚本的话,似乎解析不出来

    2 ?7 I8 `; x$ J; Z2 F原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:27
    9 u* B4 ?5 u/ ?. K% y原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    ! r: d; g' D& R$ b+ Q1 [https://www.pdawiki.com/forum/fo ... &extra=page%3D1. v( s) |- _, o/ M
    里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 21:37 , Processed in 0.165787 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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