掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5473|回复: 35

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

[复制链接]

该用户从未签到

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

+ m8 K* t% W" Y9 u9 D; y谢谢。
' H# }  ?. {0 \! X' j. x: A3 d9 m
7 s8 ^  J! K8 S, x" _

! l5 y, j1 V' T" s! J" f6 ]. y! y( |% ^* O& }
8 N( k# h/ n! E1 k* f

" U9 e5 f) P0 w( `/ H

本帖子中包含更多资源

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

x

本帖被以下淘专辑推荐:

该用户从未签到

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

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:041 d1 f9 }2 Q9 X: \  l/ J
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...

    - f8 V: ]$ |- M( v7 W! s
    / |2 S/ a7 X0 r9 z5 G可能此词典作者还没有公开过吧。。。
    / F* C! U. H) }) {8 {3 S
    ( q0 x. a! E" fdog) k  r& T# [5 m: ~: g
    <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>
    ( U( O( Z8 X; D& ^4 s<hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />
    0 G( U: X& l+ Y. @- S! 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>
    : H3 U8 X" E! K" M/ W4 r( X<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/ l/ U7 L- t4 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>2 M9 W1 o( W! C# b+ _2 h
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>5 L* Y- g3 }* s4 g" |
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>9 e) n6 z. D  l+ [5 N$ h1 K
    <span class=C_BODY><span class="sense-block">6 {3 v0 e- W* F* K$ t
    <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">
    / K9 @  P0 _3 s  S<span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    , C/ k0 M7 n/ [2 d4 J<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>8 @6 g/ Q7 l: `4 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>, C' v: ~# r- \- K# i$ b+ O
    <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>( [/ j0 Q8 w" \8 ^: E. B# \7 G9 j
    <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>) L6 }( R. `; l. y( k* r1 Z
    <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 ~' C5 {' u( N0 ]( x! Z+ V# F* x<hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />
    1 S6 x! P# N! i  ~( B0 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>5 q1 H1 @& Q" m0 F7 q# ^. y
    <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) ^2 o* w  p! p, F! Q<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 t% H5 e8 H- x# w
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>
    ' L/ D" @( C* ]. F) F% s<span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>( ^' p: g2 v) C
    <span class=C_BODY><span class="sense-block">
    - m8 `- d& X) j6 {- |<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">% J0 N. I2 G0 M. f
    <span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>
    # W8 |1 m$ @0 m6 h& Q  W5 L4 p  u<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>
    ' n' [0 {5 U+ P6 u! ^, w- L<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">( k& w& ~" y) z2 V. ^5 B
    <span class=C_DCH>丑女</span C_DCH>
    9 c+ Y4 S* m: S% t6 O<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>
      e$ [2 F9 x$ V" S' g3 O<hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />
    , y3 r% ^- z& t' F0 @2 m) {<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>  O4 @5 X* S4 |* \0 I" D4 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># o9 T% z" n1 J$ d
    <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; F. h: a6 Y0 H! ]" X<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>8 U, a  q, o2 e0 d  \2 e5 a5 K7 F
    <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>5 |7 ~# k& K. o
    <span class=C_BODY> <span class="sense-block">+ A+ \' P" i& b5 s% l
    <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">
    ' R6 b" f* t! c3 Z' ^0 ?<span class=C_DCH>跟随;跟踪</span C_DCH>( Q6 s; J$ f; C9 R, N
    <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>; A3 }) ~+ L, k$ \/ q
    <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>
    % B" M, e& c$ N8 x1 W1 o2 d<hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />1 \" t/ p9 m% `8 o# ]2 s% H
    <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>( W$ c3 B# h# ^& `+ ^* y+ 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>
    4 i& I) G% t  C% Y- M& L! n<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>4 j( b& X& ?* M, V0 J7 Q% v
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>, B  G" Q8 ]/ d' E
    <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>* Z, x( J5 E3 q& X9 D8 I9 A
    <span class=C_BODY> <span class="sense-block">
    $ C9 o& I8 Q5 Z1 w* 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 cause difficulties</span></span><span class="def-body">
    / h* E" _# S; h7 D<span class=C_DCH>困扰,阻碍</span C_DCH>
    . W2 ~  x; D2 w7 @3 v" R- i7 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>
    " I6 `4 C( o5 P7 w3 h<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>4 g, y; b7 c5 g& Q5 Y
    </>2 q, K) l  ]1 N( W7 x7 b9 f
    给你部分demo内容。。。
    ! z5 v6 Q( K2 s3 i9 H% `6 Y  w9 w

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑
    " m  [: J$ u, ?1 X/ I. [
    bt4baidu 发表于 2015-9-3 15:36
    4 f' }( f; T0 q# j" s5 Phttps://www.pdawiki.com/forum/fo ... &extra=page%3D10 h# E6 O. o! e6 B, F! M2 f6 I
    里面的动态功能都是 ...

    & q/ K4 ?" R8 |: w6 C( R8 S# u7 G% e
    " C: k* v6 k# ^4 {" g* L已经修改了online demo,加入了对内嵌JavaScript的支持。
    ! x4 F) ]0 b6 A8 d# r8 y4 F6 X9 f6 A! R) r8 S1 k
    关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
    ; [; a" Y' G$ A' J$ i8 [9 ~不知道你有没有兴趣一起开发?我想做成这样的! f$ K( _" P1 ^: Z9 S# c
    http://www.hi-pda.com/forum/viewthread.php?tid=1210672
    # ^3 M5 K2 G$ I+ Q; d+ ?1 O" b0 Y  {" j/ o0 R

    : s9 i( S/ U: o" A# }3 }, v* R有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:& j, s/ G( J: Z" \

    1. 2 ]4 R/ v- l& z- l- q% ^
    2. (function _my_code(window) {
      ! _" M6 U, m! e' q
    3.    function u(c, n) {..}/ }! z/ f9 k5 ]1 R8 E( B! M
    4.    ..  
      # Q1 w1 e! w' b3 t! j! V
    5.    function w() {..}3 Z+ V) o  g8 W
    6.    var F = 0;
      ' x0 r' Z$ j/ r6 _5 z0 t* K( @. H
    7. / z& w7 U1 X& m, K1 q: D
    8.    function i() {! x5 K; ?9 h8 ~: m5 d" m
    9.      if (!F) {
      8 \* ?" M$ d1 j/ m" B: {
    10.        F = 1;) r0 o  I2 [: L9 Q# @  S
    11.        w();, @* q/ P" W  [
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
      + x  w6 @9 j" _- m0 c$ @+ F
    13.      }
      & W- }  G% I# M
    14.    }
      9 n4 d0 ]* V9 G
    15.    if (window.addEventListener) window.addEventListener("load", i, false);* U& Z; _+ n0 E/ j2 ~2 V
    16.    else window.attachEvent("onload", i);8 F" b. u6 h: o  J( R" r
    17.    
      5 [' w2 c8 S7 ^
    18. }) (this);  /* In global scope, "this" is the window object. */& c% C9 i4 @2 f) L* s
    复制代码
    : I) u, {( I7 }6 Y/ ~! G, U1 q
    ) K9 }6 y8 a' r, K* v
    具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
    9 M) f1 [7 ]7 J9 R6 M6 d+ C5 ]# h# `5 K$ N5 L* i
    另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 ) L4 o% s7 B3 [/ }5 k; W' F! v

    $ Z) a- `; h& Y! F# B& A1 D8 o; e 3 c/ H$ t! A7 c- V- ]7 `3 z, v  x
    % w8 b8 b2 ?' P* j+ [6 u" o
    2015年8月5日 11:17:339 i3 _5 D7 Q+ Q
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。7 G. J& A. ~2 U
    <del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>- |4 m( E0 D9 y. O- _1 }7 F2 u  ?

    + g/ j# B) {2 K% b( H& a; ?

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:12
    ' B- a2 G& m' k想法相当赞啊,不过刚试了,貌似还查不了词噢。

    1 u! [+ R* ]1 R" b- h' H+ W! x" e. I  @; |8 Z. j1 }
    可以查字典。
    ; \' t& w/ S5 D; X
    + A% X) v$ D2 X% c, k! A" m1. 需要先选择本地字典文件。
    & ]4 m2 G" p, U( l, x+ Z* R+ v' f( `2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。
    6 [& e; M+ l4 w0 S& t* g3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑 9 }+ f- ^8 ]; T$ E
    Oeasy 发表于 2015-8-5 11:12
    ; b; }1 d4 K5 g& B2015年8月5日 11:17:33, ]6 u' f" K: ]: D
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...
    6 y+ y: @7 V% f

    - z) L9 g  o  L' O% X出于安全原因,浏览器是不能自动加载文件的。不过插件可以。5 B% T6 w/ H( a, b$ D
    5 P8 p8 A1 l  S
    关于排版,正在考虑允许同时选择CSS文件。
    1 j- a2 k+ ?8 a8 f$ W
    . n, }4 I* D- f5 UIE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1961 天

    [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>
    $ `. ^! [6 {1 Z# ?8 X% U8 R- \1 R, T内跳还是有问题。。。
    ; U4 Z1 J6 k! U3 B' }没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑
    * l& i" I. y& E( N
    peterdocter 发表于 2015-8-5 11:47
    7 L& l. W- }7 e$ P" ^dognoun | noun | verb | verb
    - l0 o$ t  B3 P) @& C' g4 U3 [内跳还是有问题。。。
    & k, M1 `3 ^; N; T! Q, r没有再分析或直接替换成#C_hkz4
    " D3 F( ]7 Y' c. V& X- j

    + X8 |8 n5 R1 V' H% I谢谢意见。
    * O) |8 ]5 r1 z9 [, c8 w  t! [: W
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    6 ]+ Q8 j' Y' e* y
    0 d3 t/ I* p: b9 c: j我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。
    % e$ s6 i% \& E) N我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1961 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:13
    ' A- p/ P! [" K; T  W( ?) w& d谢谢意见。
    ( E# z$ b2 v& T& p' n5 T
    2 F) @# a( y3 \含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    8 n' y! L. q" C# P' w9 G2 u: |' i2 A
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51; U; Q5 j3 f- }( s7 F& V
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

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

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:035 y/ b) C7 C, n0 w
    可能此词典作者还没有公开过吧。。。  ~3 K1 k1 ^1 R7 `- y
    2 }0 \0 C  C* I
    dog
    ) h. z* T0 F* W6 ], P
    ' c5 Q  ?- ]5 C3 ~1 y
    谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。
    * k9 w) F" T2 T$ v9 q  m, @! V; n, e$ H# u
    您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

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

    1 v: L( O+ d0 @9 d- S3 m  v4 S( x
    . N8 h/ O$ R' v$ v. @1 z感谢楼主辛苦工作。  w) N; r0 U, z; d! Q
    反馈一个。
    6 o1 r* W/ Z+ Z8 G' j查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。: v* c& x5 f, T- j& v1 E" M
    如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。
    - Q) E: s3 U; r# }& i
    ; n- R9 j* S) I7 x  |, z9 n% ?; {4 F' E! V1 K. z

    0 C# O" [  w- ]1 D8 g- p' \3 l

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑 & ]* S) C) G0 C" f/ X* F6 f
    Oeasy 发表于 2015-8-6 08:09
    : V7 Y- S6 F' t: p) y9 s1 d3 A感谢楼主辛苦工作。; L5 {$ x0 t, F' f. `* ~
    反馈一个。
    # s2 K. @( a$ Q% G$ w1 V查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...
    8 i; G$ d% z/ B2 {, \/ l
    ! A% `9 h( p8 X/ g8 q* }9 t5 l
    这只是个概念验证/功能演示版,离完工还远着呢。7 b* `- w6 M- o' r- h8 }- ]
    现在专注修改核心,界面等有空慢慢改吧,9 o& v) P& ^6 G: J
    真希望有UI/UX经验的同道加入合作。
    8 u5 b6 h. T$ X9 g% P) v2 `9 E. v0 |, d/ y
    具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34
    : `# n. W- ~7 a& B语音方面,建议支持mp3格式的mdd文件。
    6 X" A3 X; ]) D  a& `2 j: u/ i
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。
      z) T) U9 x' s0 u" j  ?9 z4 u+ ]7 m
    ( o2 S1 D. [  {( r不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1961 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:41
    8 _  ?$ Z: H+ K谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。
    . }2 }% K# Z& f
    8 y2 w% q, S4 r8 T您可以在顶楼提到的MDict on ...
    . @+ @. s% c( o% d
    不错!不过还有一个bug
    * X; u& v# _0 e<a href="entry://dogged" class="C_REF">dogged</a></# {  U' C, f1 R( H# M, x' b
    没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑
    $ M) T" K9 [, W
    peterdocter 发表于 2015-8-7 13:03
    - a: Q" A6 o* R不错!不过还有一个bug
      f9 E' B' l1 d! w; Ndogged
    0 T$ J, C/ x( D1 D; Z; t: }

    0 ~2 t4 ^9 p* l; g3 T; M# A; I( A这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    ! a! b) e* w  T0 r; r" n8 b0 n
    5 K, r6 r0 i. l: E; S当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。! `; Z" G$ u2 p& s6 Q1 g6 E. b
    1 D/ H1 L" r2 G# q& Z
    不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。
    8 }% G0 g- e- P4 |
    * I9 s; R* Z+ J  q- Y( }& k4 S已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1961 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    9 d( ]6 M( G+ m: A1 m1 M! |这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。
    7 h! E7 z. D7 Q8 H* w8 a" |. L3 L2 u# p3 s+ F! y/ Z' d* }; Y
    当点击形如 entry:// 非页内跳转 ...
    1 H$ V. x( X/ ?; W) u+ m
    再给你demo调试,而且可以连跳了 8 x) k- l5 z6 u4 B( [

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:187 O  ^/ @: S4 q5 f, x/ I
    再给你demo调试,而且可以连跳了

    0 P6 t+ `9 N/ J我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。5 a9 ]6 |& D8 L! B5 H3 N8 F6 E$ ?+ n
    ! D5 Y0 u) N$ t$ y
    另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?5 x" u9 J% [: @1 F: Y( A: ]) y
    1 e" p1 o+ C( _- n8 G; A' T- `4 N
    dogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。
    " j1 B: T8 R: x/ t# B7 W
    1 i' H# \# u6 C& h; @" @0 k) a3 _回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑 9 n+ {# V  D0 Y& G, Y
    # @/ q0 S% K* r3 G4 @* J2 Q7 c' Z
    支持!) I3 L9 g: u2 @) o
    原來樓主就是因為Chrome插件而開發的
    3 q7 V- w, A/ Shttps://github.com/fengdh/ChaZD
    " ]# _3 o5 x* q$ W$ U* q
    0 m1 c4 x* I8 I( G2 L# @, j今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51& h# A; F. K4 Q( m8 ]% t0 E1 Q9 v) O
    词典里面有javascript脚本的话,似乎解析不出来
    2 j- X+ ^" e' ?+ f% e7 S
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:272 l2 N4 X0 [6 o+ W
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。
    0 |- j3 S% V( y! ?1 a6 h. _: r
    https://www.pdawiki.com/forum/fo ... &extra=page%3D1
      r  j3 c8 R* p+ J- B5 J! Q里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-6-10 22:06 , Processed in 0.074749 second(s), 12 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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