掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5226|回复: 35

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

[复制链接]

该用户从未签到

发表于 2015-8-5 11:05:40 | 显示全部楼层 |阅读模式
本帖最后由 fengdh 于 2015-8-5 12:49 编辑
. t6 A9 ?4 ?6 h' s  n7 V$ z/ Z* O; I. O" I
我并非MDict深度用户,不过因为想为自己开发的浏览器插件提供本地离线字典功能,结果用纯JavaScript实现了一个MDict解析器。这个开源项目现在仍然开发之中,大家可以去 http://fengdh.github.io/mdict-js/ 围观,欢迎提出建议。这仅是一个在线功能演示,还不是一个MDict在线字典的完全实现。它没有服务器端,仅仅通过网页形式提供所需的Javascript库。需要用户从本地选择mdx而且可以附加一个mdd资源文件,因为不会上传服务器完全在本地解析查询,所以几乎是瞬间得到结果。现在可以支持图像/语音/简单跳转/模糊查询/mdd内置样式文件等等。' I5 F: u% Q7 q* w' A9 v

( D$ x" J6 ^" C8 f我用手头的LDOCE/OALD/Webster/American Heritage/WordNet多个版本做过测试,字典和资源文件支持词条索引加密但不支持需要注”册-码的索引头加密,支持文件压缩(gzip/lzo都可以)、词条链接、语音(wav和spx,需要mp3支持吗)。暂不支持超大文件(>4G,离线维基?)。暂不支持Stylesheet替换(还没遭遇过使用这个功能的字典,哪位可以提供个实例就太感谢了)。只对英语和汉语词典测试过,不知道其他语言有没有大问题。
2 L0 t  `0 e; s, l) Q/ Y+ I9 H4 t3 h0 U: J* G, |2 W! s1 T! v; s# ~
我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。
1 Z$ _3 `+ g" i. l- l; J+ ]9 {" @! ]+ V. s: e9 {
忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。
5 ?) E% v. L9 \5 ^6 i) Y; o& k& @+ _- e
谢谢。: Q) M- w4 s# s
; H0 H6 C* ~4 T! x
/ K* Y# {- A3 r) C

4 w' H0 u1 W+ ?$ i+ {1 h
# U9 m+ T$ M2 g" E9 s/ n. H
, Z" v* M& D: H% p0 M( d3 t3 k" U! W9 K

本帖子中包含更多资源

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

x

本帖被以下淘专辑推荐:

该用户从未签到

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

    [LV.Master]伴坛终老

    发表于 2015-8-5 15:03:55 | 显示全部楼层
    fengdh 发表于 2015-8-5 14:04
    " {5 Q/ x" t* ~, ]% A您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...
    : Q! v$ C. @, F+ W5 S
    " }, h& o, f/ n# j$ L
    可能此词典作者还没有公开过吧。。。
    2 }. f: X2 D+ Y
    2 j" S0 b# T1 r/ m. c" xdog3 T" q; H8 ^- x7 x
    <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 O& T0 F; `; o$ P) l, I- ?
    <hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />
    ) _. y% Y- b* A" Z; r% 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">ANIMAL</span C_GW><span class=CD_CH>动物</span CD_CH>
    1 k. X% g' M( T: X. N! w3 L8 E5 M# F<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>
    8 N$ D" R6 Y; z# W<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>. |+ Y: `% y% p3 ^# h3 R8 [
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span># `  o5 O: G  _7 ~: {+ z' A+ {5 N
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    5 k0 A1 _7 `3 V' h: a<span class=C_BODY><span class="sense-block">
    ' h+ ^, A1 r$ 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">
    # C: {) e9 D8 q. s. c3 N2 X<span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>" S) C  a' s! |$ q3 e
    <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>
    ) _5 Y5 S' R/ N2 @- K  c<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>3 f" |# C( `+ t
    <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>  O# }- g1 _; E
    <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>7 f0 p9 z" W6 `" R9 j, ~! u' z& _7 ?
    <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>
    9 Q% V' `. i* N5 x+ |3 m6 G<hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />! L) `% {4 i$ ~8 w+ Q- i( \
    <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>: ?' y( ?0 c9 K2 \3 @6 D( k4 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>  O" ^/ z: B  f' ^' [+ F( Y; q: ^, 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>
    ' r% |6 S$ Q  u$ `  S9 H* J9 t<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>: v4 a4 D9 {6 G6 m& H
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>. N( [* y6 b$ \( W+ L
    <span class=C_BODY><span class="sense-block">* c) Y( P3 L) Z& v+ Y
    <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">
    : q5 j1 W0 _& n7 C0 b<span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>
    : e: s0 n3 ^; {% y<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>9 x2 |/ S! [, J/ A; s( Y  k
    <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">
    - Z# g" t  J* ]- R1 W0 d8 H<span class=C_DCH>丑女</span C_DCH>4 y/ a  M( }" C0 Z; S; X8 B9 f% R
    <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>
    9 d6 o  q& K6 F5 k9 w% f<hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />0 O$ z; H  j1 `$ `8 C. l7 n2 ?
    <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' A. ^1 K$ L3 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>" k1 \/ @* U8 W- |9 v& U- A% U% 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>4 W$ m6 |! C4 q* I
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>& Y, L2 u( z. F! j( u. y
    <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 Z0 C7 S( Y; h! X) p
    <span class=C_BODY> <span class="sense-block">
    # X- D3 [8 i8 @) h, l% M8 o: I<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">
    5 r" R0 S$ G3 ^8 F* ~<span class=C_DCH>跟随;跟踪</span C_DCH>5 s/ Q! y( ^* G  M' P
    <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 o) C$ p$ w' c! x; Z<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>; P- l; p  J, X7 {6 C
    <hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br /># i3 q! t, \, w. n2 w2 b0 ?
    <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>
    $ A0 _' R. o3 c" 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>
    9 x! L3 z* D' g1 m  P$ ~3 L% i" 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>
    4 W/ O; |2 `- N/ c% k/ F0 W* y: _) _<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>" J3 f* r5 n$ M2 W( [. Y' Z1 m3 D. J
    <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 o& N  P: |( I  p8 J5 Y6 y
    <span class=C_BODY> <span class="sense-block">
    ; ?& z+ D& O9 q5 V<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">  E6 q% J- a" Z& d/ u4 I, U
    <span class=C_DCH>困扰,阻碍</span C_DCH>
    ) T/ \1 ~/ x, c' ^5 I5 a, X<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>: L! K4 G% `* K
    <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>
    6 Z* Z% u! i  p2 j$ c</>. V4 [, C) V* j. ~9 B" [: Z
    给你部分demo内容。。。
    + J7 Q3 V* j$ M9 _. _! U

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑 - _% y( t# m7 l1 B& o. e
    bt4baidu 发表于 2015-9-3 15:36
    : c. X9 Y- J, b8 J4 P  j: [https://www.pdawiki.com/forum/fo ... &extra=page%3D1& B0 ^- A) j) S& j4 F4 n
    里面的动态功能都是 ...

    * j2 `0 J, P' X( T( J8 B) q5 f8 K/ ~  w+ g2 E7 V
    已经修改了online demo,加入了对内嵌JavaScript的支持。
    $ a$ y( |# f$ Z* l  o) q9 T6 a) Y0 K7 c( Q" w1 V/ [9 v; j& G
    关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
    % h& C9 F5 e% p不知道你有没有兴趣一起开发?我想做成这样的+ a1 o6 G6 O8 {
    http://www.hi-pda.com/forum/viewthread.php?tid=1210672# e, }  D; G6 s. |$ H7 R4 b
    ! X5 F0 ^9 V5 b* ^" g, r7 j

    ' G$ x! Q4 b8 _+ L' f' r有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
    9 B9 {6 Z4 `4 B& \( p1 z

    1. 7 Y$ X) _! q4 }- p8 v
    2. (function _my_code(window) {
      ' E1 l. b$ P, n) z5 f$ r* q5 u" T
    3.    function u(c, n) {..}9 e$ J  q* j" }
    4.    ..  
      ! w. E+ A! K& h2 A
    5.    function w() {..}* v- P  G  {$ O% B
    6.    var F = 0;
      5 Z" O: e' g+ e  C4 k5 V
    7. + {$ ^2 X! N. k3 y7 [8 G& K$ U+ K8 z
    8.    function i() {
      ( z0 h+ k: n% {* b# c
    9.      if (!F) {9 j. Q% @  @0 q' g. Y" Q( O
    10.        F = 1;
      , B* E2 {3 u# Q+ D: i
    11.        w();
      ) H1 l, O& f* G8 d, h" j$ Z5 U
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);, P/ W( c" y; L* `8 f+ E
    13.      }
      2 U/ N+ E! A8 h# ?. w6 j$ u
    14.    }& _& U6 k; ^) X' \# g
    15.    if (window.addEventListener) window.addEventListener("load", i, false);
      9 w. n- S8 q1 x7 K, q
    16.    else window.attachEvent("onload", i);
      ) E1 q6 A4 k0 w+ |- ]; z$ [5 {: F
    17.     0 k* x  \) L4 B2 a
    18. }) (this);  /* In global scope, "this" is the window object. */- Z0 F# ]# E$ |' [# Q7 L
    复制代码
    , F4 p5 y1 s$ X" f; S
    6 O% b; i4 m: n+ x
    具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
    ( h. ]. t: X5 E- ~- J& J! V
    9 g* g, h3 j8 N9 R8 e另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 & B0 Z& I* x0 l

    ' Z5 ]3 g! ^. f1 n# p
    0 B+ b5 S# H' Q
    9 V7 \8 B9 f- N4 f8 q3 m# @  V3 V. |2015年8月5日 11:17:33
    % A$ J  \+ p$ E* a2 d换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。% ]3 R7 @# c7 m' K  i
    <del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>* v1 p" e4 |# P! W

    6 z  @7 G3 K- C; _  m9 v" X

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:12, @. T; u/ M  t$ t3 E2 R0 H
    想法相当赞啊,不过刚试了,貌似还查不了词噢。

    " q) s2 i2 ^. k( o+ x3 W
    : W' B* o5 B* T# k6 {3 i0 X; g" C可以查字典。
    ; ^# e( N+ i- @) J: j& G0 ]# P; i/ C/ c% J. d5 u
    1. 需要先选择本地字典文件。1 j! M  }: E* q& {
    2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。
    4 t& T# V' _3 B  F0 o2 c3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑
    6 G" k/ y2 u) L; w
    Oeasy 发表于 2015-8-5 11:12, Y1 H: i0 J& ?, b
    2015年8月5日 11:17:33
    ' u2 J: ?4 n% I8 C! Y1 i换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...
      c6 [2 ]& p8 y$ |1 ?$ ?

    & I2 P- d3 d* [出于安全原因,浏览器是不能自动加载文件的。不过插件可以。5 L3 C# i; d6 T
    ) f- T3 \& ^$ F0 l' `' T6 A
    关于排版,正在考虑允许同时选择CSS文件。
    0 p! j3 C: t6 f+ |) G" M
    5 P: a. z3 O7 gIE是个坏孩子,暂时请忽视它。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [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 C! C' }  ~4 G内跳还是有问题。。。
    1 d0 I7 ~/ |& l* H$ w9 e+ K+ k没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑
    ; a1 X+ J4 `; C) M- L! z  p
    peterdocter 发表于 2015-8-5 11:473 ?) N/ D1 L$ {+ U
    dognoun | noun | verb | verb
    - `, o4 V  }( D0 @' o: `内跳还是有问题。。。
    ( ~% H# Z2 Z# h5 G/ U; A$ I. F) _没有再分析或直接替换成#C_hkz4

    2 u% }5 {6 ~. n& u/ C0 I" `* p. [, ]5 S* N1 B
    谢谢意见。# E, N8 b# u( a3 t, ~: V# q, A

    , z. ]' l' J' R4 b9 M$ x含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    2 K! e' A( ^6 M- {: @+ G* j0 G9 j8 M
    3 I2 b! C/ l# I2 l2 z7 @我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。4 {: ^) t& R, d* }
    我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:13/ j8 w0 U" m2 y1 a9 H  B! e! f
    谢谢意见。
    6 |" \8 e; l/ g6 O
    2 r4 J  n" N' m  E0 d3 Q含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    / \/ E) b" a8 r# T7 B
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03
    2 a& k' Z" J' n6 O可能此词典作者还没有公开过吧。。。
    & G1 e4 r) ?5 a- G4 T- G( T' m% A  ?# E0 e
    dog

    # P+ A: e) d1 v5 {% k+ j+ X3 C# s4 b0 G9 v) r* U. F6 s& F
    谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。" Z5 z1 Q  @& T3 R" ^

    ( v3 W; x. ]& v您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

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

      W( X6 Z+ M# Z: M. b1 Y
    : w& T8 c8 P7 ?0 T感谢楼主辛苦工作。; N4 P# S) ~9 k+ f9 c9 @$ c" X
    反馈一个。0 N$ j/ W. h" W- B" H" g1 |( Y
    查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。: |# f8 F& h" y+ ]% g6 D8 p$ G
    如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。
    2 F+ v) o/ P) ?9 u7 v
    ) ?' F6 |! f, [' [: h- y' ~
    8 j' z5 G2 b% }( R' ~6 B1 m. ]' v: q; Q: t

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑 8 X3 b0 J' @; G
    Oeasy 发表于 2015-8-6 08:09+ J! Y7 P# G) b% ^, I6 i. \. N
    感谢楼主辛苦工作。
    " a# a$ s+ ?% ^" K* {3 m9 o反馈一个。
    . v5 B' N' M0 i查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...

    / T, ]4 F- l8 V: [+ B
    " R3 k7 }( F5 [9 R2 b. @' m- B这只是个概念验证/功能演示版,离完工还远着呢。
    $ p) S% _7 b% R! `现在专注修改核心,界面等有空慢慢改吧,& R) k; |* u6 K5 x- x
    真希望有UI/UX经验的同道加入合作。+ E3 ^! d" r5 U! W% O3 d
    * S' Z+ l! [5 i+ A2 I7 C# m+ k# p
    具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:348 Z8 `, u6 I" m- V) l( d
    语音方面,建议支持mp3格式的mdd文件。
    ) M* J& m+ ]; x& }
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。
    - e: H) _% ?9 U1 h" n: D+ a7 R6 c- P# F2 R
    不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:410 `; ]1 ?. k( O5 i* M
    谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。/ z, _* T. D: |
    + o1 n9 ?- @$ C+ p$ _) ?
    您可以在顶楼提到的MDict on ...

      U% S4 X' j3 V+ D不错!不过还有一个bug
    $ G. Q; X6 L/ W# {% U<a href="entry://dogged" class="C_REF">dogged</a></
    ) p5 w6 _' p2 d7 x没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑
    0 n& D' ^& M6 `5 s! K; [1 N" l  G: Z
    peterdocter 发表于 2015-8-7 13:03( s* T8 {, d" O5 o) K: J
    不错!不过还有一个bug
    , b! q2 c6 D! M! V4 @7 x$ |( _% Xdogged
    : f6 L: a$ ~/ l# k7 Z' ]# o$ R* d

    5 M% u( L/ N6 i0 ]7 a5 G$ ?; O# y# k这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。" m8 J0 a# K0 q* P
    2 R, G5 e% X+ N: u) \
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。
    * B7 s( W- W9 l; A& ^) `/ ^7 g, \
    1 J9 u; U( y" M$ g& u5 P( V) `不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。
    5 A% g- u! \! e$ n; _2 g7 o
    : ]( |: L( {4 h! @! {' z+ q! [已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    + v" f2 J  ~. n% g. X这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。2 s& t; o0 q4 W
    5 a, h6 `# E# W* C
    当点击形如 entry:// 非页内跳转 ...
    4 J2 T% {! M9 D. g; l& @2 T! i! _* B
    再给你demo调试,而且可以连跳了 - a+ [2 D2 \( U

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:18, N7 ^4 `! i- c, c
    再给你demo调试,而且可以连跳了

    * x' \8 d) B$ R+ \3 D我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。
    : q% ]  M/ K. L; I" r9 {" C4 Y9 g% q3 s
    另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?( n1 O0 Z+ N) ?
    " M, l# u, P9 }( d
    dogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。5 I& t1 q* |  {, u. a9 Y
    6 w6 h- x4 r8 e
    回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑 ' ]1 d; S+ }7 O- {) ~2 z0 E4 ]
    $ c+ {$ d0 a7 p$ N  }- N5 a
    支持!
    + P6 ]( g9 ^! _- T$ T原來樓主就是因為Chrome插件而開發的
    & A5 h8 c, Q3 n$ h2 [. ihttps://github.com/fengdh/ChaZD( }* k1 K( x; \& c! ]3 W

    & i% j/ s6 T( g2 K, R, l1 r今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51; `; x( u7 G4 V( x* ?9 U
    词典里面有javascript脚本的话,似乎解析不出来
    % g2 w7 F/ I( O- i7 @% C0 O) M
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:275 X; I' ^! A+ N0 s, o
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。
    ' n' n$ V& g  n3 Y7 i
    https://www.pdawiki.com/forum/fo ... &extra=page%3D1
    ( G9 J2 ]1 \* @里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-24 22:16 , Processed in 0.058164 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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