掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5253|回复: 35

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

[复制链接]

该用户从未签到

发表于 2015-8-5 11:05:40 | 显示全部楼层 |阅读模式
本帖最后由 fengdh 于 2015-8-5 12:49 编辑
% G# }1 d7 E" n  Z  \* u* @
7 o% r8 D! C1 ~/ b' F+ v我并非MDict深度用户,不过因为想为自己开发的浏览器插件提供本地离线字典功能,结果用纯JavaScript实现了一个MDict解析器。这个开源项目现在仍然开发之中,大家可以去 http://fengdh.github.io/mdict-js/ 围观,欢迎提出建议。这仅是一个在线功能演示,还不是一个MDict在线字典的完全实现。它没有服务器端,仅仅通过网页形式提供所需的Javascript库。需要用户从本地选择mdx而且可以附加一个mdd资源文件,因为不会上传服务器完全在本地解析查询,所以几乎是瞬间得到结果。现在可以支持图像/语音/简单跳转/模糊查询/mdd内置样式文件等等。
! p. Z" R3 y" T: i9 |& v$ a) d, }9 w/ D+ H8 U; }9 U0 }: D4 i! x1 g* p$ {
我用手头的LDOCE/OALD/Webster/American Heritage/WordNet多个版本做过测试,字典和资源文件支持词条索引加密但不支持需要注”册-码的索引头加密,支持文件压缩(gzip/lzo都可以)、词条链接、语音(wav和spx,需要mp3支持吗)。暂不支持超大文件(>4G,离线维基?)。暂不支持Stylesheet替换(还没遭遇过使用这个功能的字典,哪位可以提供个实例就太感谢了)。只对英语和汉语词典测试过,不知道其他语言有没有大问题。
/ G2 k" l0 |5 O" G" X6 D( T; o% `3 ?. `* i
我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。* \* t* R5 d% x8 y

2 F$ m/ z- e8 ?/ f- d% R忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。
) T; G8 D* ]7 U7 t8 }
3 d1 e; N3 _0 L- R: O谢谢。! h* f7 G/ ~3 g! ~, d. ]' V
' f+ ~# S) p, ]4 U, O* o( Z
. Q6 c2 X1 S4 w6 _* F2 c9 O
6 R6 c& p, ?9 {) h- f

3 w) {5 Q! b5 \. p& ~& A
" v( t, D* d- U; ^9 F$ ]! e* U/ W. \% D$ a3 l

本帖子中包含更多资源

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

x

本帖被以下淘专辑推荐:

该用户从未签到

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

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:04. m7 V: R  Y4 q/ v
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...
    * g9 H! C, i" `  F) r8 Y
    , |; L$ D$ U) m. @% P
    可能此词典作者还没有公开过吧。。。
      o. y$ u3 y, z9 J+ o" r- q4 K/ G- J! a, x2 [
    dog7 ?- W2 {! N& w
    <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>4 J* m. l, O; F9 V
    <hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />3 [3 B- k0 ~8 ?) J- A
    <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>9 O" J3 t8 x5 R; L- z$ g
    <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>/ m  C$ @' v; j. `! }
    <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>
    7 T6 Q, v$ l, l" I9 Y<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    : X- [: M& e$ |8 g1 C4 z<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>5 X* Q/ H0 e& Y4 j( X# `% m
    <span class=C_BODY><span class="sense-block">
    * a# w' t/ q, m4 i% G<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">- D) N) M# x  I9 M2 o
    <span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    # b5 B1 V' {# Y& E& t9 d2 _, _<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># E8 {+ n9 J/ @* n! _) ^
    <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>( n8 j& O0 n0 b: M
    <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>) s$ }8 C' C+ D  s7 t, t+ @/ d" Y
    <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>
    ) t, k: H# L0 z0 n<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>
    : R- a" K7 o0 x7 s) |( j& n<hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />
    % \8 w/ M6 V9 q2 P2 T4 ?/ j- M5 X<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>
    2 u( E- x( q+ X4 E& \+ t) i' @  u% }; B<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>0 b7 D6 M; Q, q2 Q9 N4 c' i) B
    <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 D! T1 A  P6 l$ R, v* K7 q
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>2 ]* H7 X; V5 h( h. e
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    7 f, a: N7 _# t0 [7 e<span class=C_BODY><span class="sense-block">
    9 u2 l7 k; Z: ]4 X. j5 f<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">$ [' A- R( h2 \9 r3 N% V' O2 h
    <span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>, F4 q/ B. `  {
    <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>
    $ s/ q& L+ h2 c8 v# 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">4 l) l; W2 `; ~& |- u' B
    <span class=C_DCH>丑女</span C_DCH>! ]% r# H. H( [( b6 G0 c8 Y( I
    <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 ^0 r& e- G' o3 r# a<hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />9 O9 `' G+ Y5 k! v6 K: n
    <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>
    * y" J5 n" _1 M2 V+ N3 f$ 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>
    & W6 D5 a# f+ e  T" {5 E5 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>3 v5 F3 h. H# G" f
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>  M2 x" |* I+ n% t+ K# H# m; e2 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>
    ; J3 L& p9 L9 x: E8 q<span class=C_BODY> <span class="sense-block">6 H# ~3 A; W5 C) u
    <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">) A: |; D- F5 K
    <span class=C_DCH>跟随;跟踪</span C_DCH>, k6 C" i# A, G. Z; L1 {2 y
    <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>
    9 Y" ]: O  w  m/ H* b<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>3 e& D, s  v- f$ t$ i
    <hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />
    & @; {+ c, P0 R7 g7 g! W<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>
    2 }4 u8 N0 N" 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>& M9 P( [$ D: D# j2 @
    <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>) b, j  }( x8 g6 b7 f
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>/ r5 v& g; _  a
    <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( O+ m. W" O# \# J+ S& H<span class=C_BODY> <span class="sense-block">$ w2 z0 F1 S! E1 c) G+ ]
    <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">8 P* S/ _8 _' ?
    <span class=C_DCH>困扰,阻碍</span C_DCH>
    : B& \+ J6 ~4 Y2 C& D<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>
    ; T, w# K  s" Z" H# Q' 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>5 Z$ S; r6 G3 a- a$ g2 s( }) i, k$ v
    </>  k7 D- e& {  X/ \$ M5 Z6 z- @/ n% {
    给你部分demo内容。。。" u; f8 W2 n5 _1 f, [6 A

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑
    7 K- z) S) o+ ^) E; }; e" j
    bt4baidu 发表于 2015-9-3 15:366 u- T/ X9 ^+ k5 o& C2 T' {
    https://www.pdawiki.com/forum/fo ... &extra=page%3D1# Z! E/ L4 a* ?' m  H% ?1 |
    里面的动态功能都是 ...
    * O" V8 Z8 }! V" l$ u) B& w
    4 T$ w# f) n; ~! y
    已经修改了online demo,加入了对内嵌JavaScript的支持。$ n6 f0 j6 e* K) [5 T- s

    ! R1 R" X, E( k- ^' x9 X关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
    + {/ O" x+ N: b3 X. E' {+ D( y( E不知道你有没有兴趣一起开发?我想做成这样的
    2 s* O5 q5 g5 |; P$ }9 Rhttp://www.hi-pda.com/forum/viewthread.php?tid=1210672$ q1 W' a* r: O2 P

    * T) Q0 u- f# r4 Q. r" O8 `6 o8 i" u! J9 n* F
    有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:# y9 y' p2 Z' R% N  h7 _
    1. 7 o) u: o) L: _3 V
    2. (function _my_code(window) {
      / V0 B% M1 m4 n  U. \7 t
    3.    function u(c, n) {..}
        w$ `! T* F6 K& w& L; G9 o" p
    4.    ..  ! `8 d1 U$ }- K( }  |
    5.    function w() {..}
        Y* f. N0 p1 O) R* o/ U, z& l
    6.    var F = 0;
      6 F& n9 H+ z- d8 T: c

    7. , P& q  l4 d1 l" u8 ^
    8.    function i() {
      : L; K# |5 Y: l+ d7 {" l) |
    9.      if (!F) {1 i4 h$ l! A( V! T9 U# B2 Y
    10.        F = 1;
      # l+ B7 k6 l# e' {/ b" N; Y
    11.        w();4 C% b. \$ C, _6 ^, Z+ J+ Y
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
      / R# C& z1 F0 m% g
    13.      }/ M5 w% B- e) R  ?
    14.    }9 Z  P3 N# @1 s0 W
    15.    if (window.addEventListener) window.addEventListener("load", i, false);# [# w4 t( B. z7 s
    16.    else window.attachEvent("onload", i);
      - y$ K1 G8 p! V/ W0 F! [5 {% x
    17.    
      8 G9 L- q  }3 e0 I
    18. }) (this);  /* In global scope, "this" is the window object. */
        R% D# i/ S* o0 D
    复制代码

    ' f* \1 A8 T  W- U! b7 k0 m) m2 i, _$ P' z: s2 ~: a
    具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。2 y  q* t) Z. z  Z5 _
    ) h  s5 z( N  e
    另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑
    : T7 T; D- {% W- u' Q. k& `5 V) [  u( S
    3 Z" A7 {) `  D( t: [
    : U# b  h! l( b
    2015年8月5日 11:17:33
    7 ]7 h/ N& t3 O8 a2 c  ]' b, |+ ]换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。
    ( R6 k) R; {7 n" A<del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>: Y, `* P' F% I0 I) Q

    7 y6 y5 u' O3 j

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:127 [7 J, X. {3 M9 K/ Q
    想法相当赞啊,不过刚试了,貌似还查不了词噢。

    6 D; |0 W  {: g4 p- g$ m0 w' n3 z5 v4 b; r+ A
    可以查字典。
    * }+ o( C* H8 F3 _* ^! \  |' {6 D" {& x4 ^
    1. 需要先选择本地字典文件。
    , m& S: w6 B& d1 i9 z2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。  I2 q' M6 g- D* V( Q% Q7 z. y
    3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑
    2 n2 p* q4 G8 g# h5 f/ |
    Oeasy 发表于 2015-8-5 11:12
    0 P& m% D. K4 E% j7 q! X# f2015年8月5日 11:17:33
    ' ^4 B0 I, k) n/ p: M; j换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...

    7 l4 A0 R/ O) P) v1 t& w- C- H: t- U' v% c+ d
    出于安全原因,浏览器是不能自动加载文件的。不过插件可以。% G: `6 f( ~/ i
    6 p8 U4 n, H0 }$ a
    关于排版,正在考虑允许同时选择CSS文件。
    - q4 x3 [; j+ D
    ( Y0 I0 c5 T7 c  m/ h  oIE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 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>8 t- ~) {! P% r2 w0 ^
    内跳还是有问题。。。
    : v- v: A/ W( M1 [没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑 ( X2 \& Q: X0 L+ ?( f
    peterdocter 发表于 2015-8-5 11:47
    5 ]1 I8 [5 m7 `$ A$ Gdognoun | noun | verb | verb! k2 j$ C8 Y" p% u! z
    内跳还是有问题。。。  c' L" E& [$ z' H! d
    没有再分析或直接替换成#C_hkz4

    * L; R. y! q$ ?$ J2 ^! k  N
    9 c0 I$ K1 v0 S! [8 a9 ~) G! O2 v, Y, F谢谢意见。+ L7 n$ b2 p! X& _, A* E7 M

    * J$ g0 ^. C: X; x* a含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。7 |( X! l9 x8 n& H* D( k
    - y, B6 A) X8 m& k. \0 d
    我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。. {: \. C. C- U! _2 a$ ^! a
    我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1916 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:137 Q9 V4 a8 A+ P2 }5 a) n3 P
    谢谢意见。8 C# q/ c& m9 ?
    ( j9 {  H6 c" S3 U  Z3 p
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。

    1 Y9 n- E! B( G' ^! Whttps://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51
    ; v8 a  A+ W; c  m" P8 n- Qhttps://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    + c, I! q% ~- j  P- z  ]您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页内跳转的项目。可否请您再确认一下,最好说明一下页内如何跳转的。

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03
    6 b4 l5 Q0 b2 Z( f6 A可能此词典作者还没有公开过吧。。。
    / F: x! J9 y$ Y" G& W
    3 ~6 U+ R1 u7 l( k' H: _# tdog

    ( C8 z4 R( _5 _- H  Q! w0 u8 k, }7 F4 O
      p! v; M4 W' J' @谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。
      }$ _- ?+ h/ P
    / Z9 |8 v6 \/ c/ m, Q1 i' d/ x& r您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

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

    6 Q9 @2 S0 E, E; Y: A0 U$ u# Y7 @+ \, c7 I
    感谢楼主辛苦工作。: _% |' L* w' m( E8 I& }/ p
    反馈一个。
    3 e* @1 y+ K+ l: j# {查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。
    $ e& _4 x) {3 g8 H6 S如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。
    / _3 T$ `& m* g7 Q! a. p
    8 P( U. X5 r8 b1 v$ R$ `! d9 r/ c3 Q; V& o+ Y- X0 w8 B
    ' @( H3 N; a% E) S2 X, i

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑
    ! J& Y' _6 [  [/ }* i8 C/ o
    Oeasy 发表于 2015-8-6 08:09
    ; c4 N- I% A. R, ?; L感谢楼主辛苦工作。
    & E1 b4 U6 _! S* g( m反馈一个。1 \, f+ C" Q* K: k
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...
    , Q0 R( R: ?$ _8 t$ R# k5 E8 p; F8 P, F0 d
    ; t; ]9 A& ^, A' C0 l) V* d
    这只是个概念验证/功能演示版,离完工还远着呢。
    : E& \; }& h; K( H% J) [; l现在专注修改核心,界面等有空慢慢改吧,8 f: y* L+ U. Y- D- j
    真希望有UI/UX经验的同道加入合作。1 K# B* O6 u/ W8 Q' S0 m- T/ y' U3 j

    ) z4 A: ]" L7 w具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34% ]  w# w3 k; D
    语音方面,建议支持mp3格式的mdd文件。

    6 K) A- N7 `% }# E' d4 \已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。6 p6 s, d6 k( p' ~

    0 ^% K1 k& h  R3 ^不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1916 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:41
    8 J( l! D  h' d* H% A6 ^* D谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。% D4 n$ u+ R, |+ j1 A
    ) O2 C* h* E/ |  i) \# ^
    您可以在顶楼提到的MDict on ...
    5 N- T( O, f1 i" X5 K
    不错!不过还有一个bug
    6 w0 u3 G* I( A<a href="entry://dogged" class="C_REF">dogged</a></& u$ ~6 l& V, f* j. M
    没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑
    4 t  A6 i$ x1 _. _5 X" |+ w
    peterdocter 发表于 2015-8-7 13:03# W/ P. V+ Y7 x+ H
    不错!不过还有一个bug
    " Y- Z, \' i2 k/ s. bdogged
    1 m" \6 r" h" g4 V
    * P6 J! S2 _  y% E' V! s. R. n9 }
    这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。0 m7 ~$ S/ o4 `) \2 \7 h
    8 k2 w( ~0 v# t$ Z+ V& k' E3 L( y; K* \
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。
    + [2 C- P% ~4 H% Z& G( _6 P) y( e! m( x8 W
    不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。
    ! d- j* |8 _! F: g0 a* O" `7 w! |& e7 F  B
    已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    昨天 08:00
  • 签到天数: 1916 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    . c3 C4 e% U8 i7 q, b* U; [, l1 \' h这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。9 s& p7 o. O5 G8 z
    8 c; m3 J. O3 m$ D1 N
    当点击形如 entry:// 非页内跳转 ...
    ; Y  w) B8 ?$ J* x3 ~; Q) P# T
    再给你demo调试,而且可以连跳了
    ( C8 ?: E' d4 l9 C; U( e

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:18' ?5 o! t& j3 c5 t% ]* j$ b
    再给你demo调试,而且可以连跳了

    , ^, F. j* Q/ _. t! @我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。
    / a: n8 u& T3 q6 m% _0 c& m# ~; }- Q. h: ~# k3 k. I) o5 X- ^
    另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?
    8 k) K2 y4 ?. g) U6 `$ {9 ^
    2 v8 T6 [  i; [# y9 n( y( }dogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。3 a8 D( R. C: N  s, ^( o0 @

    , b; T$ t. ?% N4 j回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑 % M3 w& K' B. f6 a5 {6 y

    ! G; T1 H# U5 Z- v支持!- p' w; j0 c6 p' v# T. n9 Q, g
    原來樓主就是因為Chrome插件而開發的
    6 W- {9 @- y9 x. R" v, uhttps://github.com/fengdh/ChaZD
    / ?8 B$ r$ x; Y3 {( K4 a) B
    ( o" a$ X# H+ c今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:514 y( i1 s+ F6 b# g8 Q+ [+ B9 L
    词典里面有javascript脚本的话,似乎解析不出来
    , Y) r) Y$ u$ m6 j9 t
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:27
    ' k* K2 j5 }7 G. U+ K9 E3 ^原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。
    6 }3 B. U6 g$ P! a
    https://www.pdawiki.com/forum/fo ... &extra=page%3D1* j! R9 U: d7 Q: K1 I
    里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 04:46 , Processed in 0.059182 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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