掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5366|回复: 35

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

[复制链接]

该用户从未签到

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

+ |5 N5 E* n4 h3 T% D5 \, G$ |- m) P我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。/ v1 c7 @# c, p3 O" k! ^

; g; p/ H& z- X% p- ~忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。( D. `; `& }6 H
% d  ?; I& O8 ?3 S! J
谢谢。, j$ q) N; U$ g& J% T( e* ?

% Z# t' H3 x1 Q0 \% S2 w$ M8 F3 Z; w7 s2 t. ?/ X1 O3 m

1 `/ x( C6 i' `  B- m2 `! e# O) g
. I, [. f) B! S7 ?: ?, E. z5 X5 f! V4 U+ w) ]6 \8 ]4 L" v

6 i( U5 N- a8 n' E0 B% H- y

本帖子中包含更多资源

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

x

本帖被以下淘专辑推荐:

该用户从未签到

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

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:04/ A9 w* p! \: E5 e/ Z
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...
    8 s, `6 L5 m2 s) o2 U
      S4 k: W* n0 d0 a6 j, m4 C  I; F0 [! I
    可能此词典作者还没有公开过吧。。。8 ~+ v6 T# L% ?3 f+ g: i
    1 u5 [. G/ S5 O1 C% H
    dog' I7 U# j2 j! 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>) G, ]- I4 D' [1 t5 k$ m
    <hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />* \2 Z7 t) Z2 C$ y5 Y" V& c* s
    <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>
    / N; B+ p/ t* y1 H$ B1 c5 [- c<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 ~9 u+ S9 x* k; y& N7 r: O# ?3 y# h
    <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>) T6 W, v3 g( Q6 s4 O
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>) J4 R- w' I7 O* Z4 T- z/ N
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    6 r8 v0 ]5 f. i) O7 i& Y8 d<span class=C_BODY><span class="sense-block">
    $ T# F1 @( s! s" F9 R3 W3 a<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">
    + y  R  V1 ?9 t( ^/ h<span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    5 i4 k' f9 W4 h9 ]. J7 p<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>$ h$ J" j, U3 X5 y
    <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>4 Q: u6 _4 x; I6 a4 w) M8 R
    <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>
    8 ]0 K" o: Y- i) i; n<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>* U9 c& r5 }3 \) i/ f6 u
    <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>4 R" h* v. _3 c3 n' ^
    <hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />, j4 c5 `1 q- f6 [: [( J* ~1 {6 U
    <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, S8 D& [4 D0 K6 _, 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>9 b" ]) P0 |5 A/ m2 k
    <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>+ q. k: e0 k* a% y- M2 H2 a
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>) P: F, G- p- M) h+ X5 W1 c  q
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    " K- R6 E$ v# M& ?1 T4 |) z; }/ r# E<span class=C_BODY><span class="sense-block">4 w5 U; V- }* b! e7 X8 s& l7 l9 Q
    <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">
    ; G& l& q# |" g& p+ T) w. O# T0 j/ A- {<span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>
    / X3 S$ ^' X% @! A- |2 @4 T- z<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>
    - T4 y) z2 }) h+ p0 w<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">$ _% W/ R& X9 x! j# }, ~; ^
    <span class=C_DCH>丑女</span C_DCH>
    1 T0 w7 b9 @* W3 L1 z) q2 X/ H9 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>& |1 L$ e) M' B+ ~
    <hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />
      p( U* J; c* U6 ]' R. E  l  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">FOLLOW</span C_GW><span class=CD_CH>跟随</span CD_CH>6 s; j7 w/ t' L! T
    <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>5 d) E) t$ i" m# ^/ 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>
    % M3 @! c9 u. E% o  o, P<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>8 `& R% [4 d5 Z8 n& Z
    <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>
    & I& l! q8 y; z! Z<span class=C_BODY> <span class="sense-block">
    , y$ w8 }7 t" p3 }) D. x5 K( I0 a<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">
    ; K1 b# {" D: u4 I* ~- ]* M  X<span class=C_DCH>跟随;跟踪</span C_DCH>
    5 n7 t: s( K) Z" E8 ^5 U4 _6 j  e<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>
    $ S" e! G- }5 e0 v8 w<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>; D$ c8 l: R% i" @- t
    <hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />
    ! x8 W$ ]/ U* B# z+ E$ p( 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">PROBLEM</span C_GW><span class=CD_CH>问题</span CD_CH>6 T9 E; f9 f4 F' p  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 f( w5 O/ {( Z( ~) J7 |<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>
    / }; L" v  R* D6 r1 N<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span># C. ^4 r8 F  ~- ~8 C* B
    <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 W) Q, @% K& U$ i; ~4 f' P5 m
    <span class=C_BODY> <span class="sense-block">
    + v% d! A" i9 y3 G. ?. S<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">
    % J8 O, O- m. z3 k' x0 m& Z<span class=C_DCH>困扰,阻碍</span C_DCH>
    , b. m9 Y5 Z. I) r# D# |% M<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>) y. L2 y8 W0 M' D  H, T3 \
    <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>
    1 h9 g+ M7 M  ]; F( b3 B</>. y  f, z( t3 W, M
    给你部分demo内容。。。* ~1 l4 b4 {( {

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑 4 z$ }. O5 i3 ]: S
    bt4baidu 发表于 2015-9-3 15:36
    2 \- S- P) {0 Z' A# `6 Xhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1# Z! V4 u' W- u6 ]! ~
    里面的动态功能都是 ...

    , D8 G# E5 h( Q+ l1 N4 t- I
    4 k' G; i- g7 r. R9 \* Q已经修改了online demo,加入了对内嵌JavaScript的支持。
    ; Q* H8 E. X! i" p; [  ?9 g+ _4 x' q2 @) h
    关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。1 {4 c& Y" r$ n+ N2 v$ P, X6 D
    不知道你有没有兴趣一起开发?我想做成这样的. Q3 S! O+ D6 z; `' u
    http://www.hi-pda.com/forum/viewthread.php?tid=1210672
      @7 E6 N6 A* l: X( V
    0 v9 ^9 _/ l/ t) K+ a8 g& P8 Y8 V9 a" c. ]) K
    有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
    9 C* Y, ]% ?# g: _/ L0 Y1 A. n

    1. - ~; U, P2 Z7 Z5 u4 A5 l
    2. (function _my_code(window) {' c: Z- i2 C: v. M9 A
    3.    function u(c, n) {..}
      7 L- J0 S/ Y& J& [* V& N3 y, o8 }
    4.    ..  5 ?5 Y# d' U, L& x/ ]$ ^
    5.    function w() {..}
      1 U3 h* v7 x) e! X7 s, \
    6.    var F = 0;+ M, j' [$ n2 ~) q

    7. 6 a( s) j; g8 `; f5 q
    8.    function i() {
        I; E/ @  C& W5 D% z# Q/ M
    9.      if (!F) {. c. }. l. B8 R7 n6 h
    10.        F = 1;- q* U% ], }% \4 x: V6 T- e9 C
    11.        w();
      3 A% k# _1 j0 C4 D! G
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);; v  Q# R, S# S& U
    13.      }" q7 Y& i9 F0 P) t) B$ b& A6 i2 q
    14.    }& F! v) `8 J# i. A5 h
    15.    if (window.addEventListener) window.addEventListener("load", i, false);
        W+ m3 u: _( f3 P. ~9 p; r
    16.    else window.attachEvent("onload", i);
      9 c5 E' b1 x, Z( B& K$ T. ^) P
    17.    
      6 b" [5 M& w- V
    18. }) (this);  /* In global scope, "this" is the window object. */
      * e8 H% z/ U: k0 d& k2 X0 v' B% i
    复制代码

    1 N* r- C$ S! y1 |, B0 l8 ]7 a
    2 M: I3 [9 [9 A9 e  W2 z具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
    - z2 n* R- t0 _0 n! a1 N# r8 B. m0 j1 ~" D" C# p% G7 x
    另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 8 l% T# G9 `. W9 g

    ! D9 A7 i' K5 O9 e5 U% E
    - o% L' O4 q7 o5 n+ J/ Q
    ; y4 s1 h! I: A2015年8月5日 11:17:33
      ?3 N8 j% t. ~. _1 y换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。
    + C) r$ A0 q% R" ]# r! z<del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>
    & ^1 H' l( U8 [, |4 f6 g4 _2 L/ b
    - D( o9 C( ?7 d4 H2 a8 R6 d( K& f- e

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:129 S8 o0 w! Z( K/ n7 u
    想法相当赞啊,不过刚试了,貌似还查不了词噢。

    8 a0 t4 a) O  X/ n0 [
    - {6 k3 o% U4 X  n可以查字典。
    * s; P7 q7 ^" `. Q1 |# z" B3 l/ q0 `; M
    1. 需要先选择本地字典文件。2 Q: z; a8 |! D. p$ k
    2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。" l# u  T- m$ y! W+ v
    3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑
    . C6 x( o, K9 H* [7 A) l! m
    Oeasy 发表于 2015-8-5 11:121 S3 m0 }$ G$ p% ^( m/ M
    2015年8月5日 11:17:333 F4 D/ h2 t& p$ Z" o& a
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...

    3 G. K+ |& Q- `# ]3 E; P
    - y* i1 s$ m8 O. S0 Z出于安全原因,浏览器是不能自动加载文件的。不过插件可以。
    6 w( L4 r+ p! a' J7 e
    , n- M  ?3 g0 t) h. U% _关于排版,正在考虑允许同时选择CSS文件。" O2 y# w+ M" m, _4 |/ G
      T  A$ S  m1 Z: M
    IE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1935 天

    [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>0 B0 m  }  p, z' p9 Z2 l5 T
    内跳还是有问题。。。
    1 Q/ d' Q6 s. Y& a* o- @没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑 # J! g0 o* E* }# @, `: y+ V
    peterdocter 发表于 2015-8-5 11:47
    7 v9 F  M7 D7 r0 M$ Z0 M3 Mdognoun | noun | verb | verb
    ! s  T% v% Q/ h3 @内跳还是有问题。。。
    % i$ v& r& }/ }$ B没有再分析或直接替换成#C_hkz4
    # w" I% @, |5 O6 a2 Y  ^9 f
    % G( E# S" N. [: u! y! v
    谢谢意见。
    * W7 [5 Z0 ?' `/ M3 m
    ; p* E- Y8 R3 I! {' B含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。4 {5 C5 e; m+ J: o0 \7 {

    , w6 ~1 Q3 T6 S我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。1 g1 y! O) n1 h" a
    我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1935 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:13
    / U5 S  L5 ~; E谢谢意见。+ T! c' }! _9 H
    . C9 @9 g$ v/ j2 F" j: F
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
      R& s! X! m1 h  M; }
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51
    $ d/ M" B& Y1 bhttps://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117
    " D6 j8 c$ n2 R/ b$ O
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页内跳转的项目。可否请您再确认一下,最好说明一下页内如何跳转的。

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03" [9 U+ I+ c( q. L2 E2 }1 a+ ^
    可能此词典作者还没有公开过吧。。。3 F: e2 A5 \' Q+ u$ g
    # t0 G7 I3 {* x; {1 T! r5 ^
    dog

    ( I6 O. o% R2 u9 k9 [0 c: P( A2 f, K& p
    谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。
    * M6 E5 o2 S% v+ U
    3 g. s3 ^- }! b6 l! z4 ]5 d您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

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

    ' f2 }5 H0 h6 K/ {8 X, e' W  G/ U# ]/ T) |5 Y
    感谢楼主辛苦工作。6 j1 N# V- ~5 Q1 A
    反馈一个。
    & c6 p" m- O% r+ i) o& q查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。1 i2 Q' g- {3 B5 \7 C7 K
    如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。* L% V9 j5 O/ |0 V
    2 L+ ~5 E9 z0 ]7 L

    . m3 u. D0 q" [7 g' k" J7 J% Y) G6 X& b- e

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑
    8 i* h8 {0 }9 u: N/ |. N, o, A
    Oeasy 发表于 2015-8-6 08:09+ K8 m+ s* `7 y  t8 {
    感谢楼主辛苦工作。$ |5 e/ B3 G& Q$ o( n! F) M; W
    反馈一个。: r( ~$ T9 G7 w' R
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...

    ! _2 q2 w/ `' K6 O7 X; X2 Q
    4 b0 O( ]5 s& `) Z" d这只是个概念验证/功能演示版,离完工还远着呢。
    0 E; @2 D! Q- g现在专注修改核心,界面等有空慢慢改吧,, p6 D/ i9 c3 t
    真希望有UI/UX经验的同道加入合作。5 i$ O" P  J1 u: G, X0 F1 m
    9 n# K5 Y4 w( n1 N+ f7 v
    具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34
    4 s% ^$ ]8 v" S# a: ]语音方面,建议支持mp3格式的mdd文件。
    : l' ]' f1 b- G
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。( Q( f% E6 A; s8 r
    6 S3 b1 i, }3 p- Z% k
    不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1935 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:414 b+ S( o' _' Z2 w" {
    谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。
    # c2 s8 s/ l2 j8 g6 ]4 P
      ^- ?0 L* U5 V2 g) g1 P您可以在顶楼提到的MDict on ...
    ; l7 c- y$ ]5 v/ `% C
    不错!不过还有一个bug
    / r3 t3 L! L9 P/ n3 X<a href="entry://dogged" class="C_REF">dogged</a></! Q0 d1 L2 T% g, `# d
    没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑 5 M/ d1 Z  p" \+ s
    peterdocter 发表于 2015-8-7 13:03
    # y! \! a+ ^5 S6 x" f7 h& b! t" Z, u不错!不过还有一个bug  w4 ~; \) g1 _" Z3 e9 v
    dogged

    7 k% c# H( P: z. P; B+ b& ?- E1 M5 B4 h
    这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    + I. w1 U( Z. N; D8 D: c& f1 j9 D8 `' W2 Q
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。# Z$ J$ w; i, n  ~; P' j' Q+ [

    5 G$ l* b( y  X: s( R9 _. p- T不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。
    + ~$ H0 ^) u+ n! M  Q% C5 K  ^% a& T0 d1 S/ u) {& }
    已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1935 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    * x5 G( d8 M5 i& l+ r5 U2 E这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。8 `1 Z" K$ \/ n0 P

    , f; N8 E% j) r, u/ Z8 z当点击形如 entry:// 非页内跳转 ...
    3 s5 ~3 V+ x3 O8 \0 J2 l4 y' ]
    再给你demo调试,而且可以连跳了 5 \, p& E! a4 w2 H3 }% u

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:18
    ( Y2 A. z& n% N. p- C/ N再给你demo调试,而且可以连跳了

    3 k) v  t7 p6 B2 m, z; @我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。# k% t4 k: V" c0 m% B

    6 G" L. S! }# ?0 v另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?" e' g  F5 `+ J

    3 h. n: v; s9 K3 ~' ddogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。8 P" U& _0 s3 y; @

    # [- Q+ a& z7 {  K, X2 n回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑
    . j% H1 `! n9 B
    ) [( ^- n, F) p3 S* ?支持!
    # _2 @4 ?; J' A5 D; |& C原來樓主就是因為Chrome插件而開發的* C! O5 S% y; v) f3 F& e; K. z- k
    https://github.com/fengdh/ChaZD5 N8 ?4 A, |% w# [& q6 \: F

    ! Y- s8 D" m: H' E6 j' a今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51& m" Z) t7 {/ I8 B. Y
    词典里面有javascript脚本的话,似乎解析不出来
    7 \- y9 _  K1 O  z% ?/ F
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:272 o( \& Q5 W6 m+ s/ U4 o; n
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    4 Q& T8 [( f4 j  n6 g% G! Zhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1; s  q  A  ?" `6 g
    里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-16 01:36 , Processed in 0.097293 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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