掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5227|回复: 35

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

[复制链接]

该用户从未签到

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

; J7 E* j* z5 M, `" w6 H8 g我打算用它来实现支持单词管理的在线阅读辅助插件,和WordNet可视化字典WebApp等等。将来可以考虑用nw.js/electron/NativeScript来实现跨平台支持,或集成到如多看等基于WebkitView的应用。凭借现代浏览器的功能和Javascript,比较容易开发和扩展很多有意思的功能。比如,复用其他字典的语音资源,甚至给任意字典加上语音或者替换不甚人意的版本。更容易定制字典式样等等。希望大家能提一些有意思的想法,希望和有能之士合作。
! R# E4 f  e! j  W1 \, k; F( W6 k$ i( }
忘了一点,暂时不支持IE(9-11,因为缺乏TextDecoder支持,已经找到polyfill有空加上),想来Windows10的Edge浏览器(号称全面兼容Chrome)应该没问题。
4 W, S3 F: A1 A/ {0 s5 K
) V! e0 J: d, _. |谢谢。/ v/ S/ ?  b0 R" L+ `  _

. D# q+ w& Z0 h/ c, ?5 B# G! r& s# s1 f6 Y
* W* ]+ D. s  _$ R/ {% f, h! w
/ v- a* H5 d9 L2 [8 u
: n. z" {9 E/ \, c# K* b7 s  G2 b4 D! K
; n& d3 T& X  e/ ?& t3 b5 W7 }

本帖子中包含更多资源

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

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:043 W. a4 w/ d0 I. m% R' L" A, G
    您回复中提到的《剑桥高阶学习词典英汉双解第3版【CALD 4风格重新排版】》我下载之后并没有发现其中有页 ...

    & `2 E, n# x/ V4 b% _% W, S
    / [" s" o  X% q* q8 m可能此词典作者还没有公开过吧。。。& d. W/ _" L+ N8 g0 s2 B( f  s
    ' B2 x  ]& c  c/ ?$ Q
    dog
    & J2 a2 d$ L3 e! d) I2 I7 `/ b<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>
    . b, B! _, m9 u; ?+ M1 i+ R) S# I<hr class=C_HR1><a name="C_hkz1"></a><a href="entry://#C_topz" class=C_NOT>&#160;1&#160;</a><br />
    $ X) ?2 v9 _" L2 J<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>8 H4 V( E. L6 ]3 z- P- [$ m. W. W8 t* A
    <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 \3 ^) O. s4 U  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>5 X; f+ X& L8 _! o& A0 I+ @' w
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>% l0 L" I. D5 s( ^1 k. s& j+ o
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    * V. Y, t) U9 Z% F5 ~' l<span class=C_BODY><span class="sense-block">
    " I2 c" o! Q! B$ |( m) t2 ~6 q: f<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">1 q7 R- R' X- B
    <span class=C_DCH>(尤指当作宠物或用来打猎、看护东西的)狗,犬</span C_DCH>
    ! w( Z, [$ W! j# n' q2 S0 S<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>
    : S  i8 G- o1 B) s<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>  N2 U6 c/ b1 [0 U9 ^/ R0 ?, k
    <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>4 Z, P2 v5 o8 r  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>" b8 r9 n% i0 x+ @) f  s6 O
    <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>
    0 J1 s) |0 B0 n! {, z+ v<hr class=C_HR1><a name="C_hkz2"></a><a href="entry://#C_topz" class=C_NOT>&#160;2&#160;</a><br />2 z, I4 |% N# m$ ~8 r8 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">PERSON</span C_GW><span class=CD_CH>人</span CD_CH>7 L# F! w& n8 ^  o# A
    <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 |! [* j( x) `
    <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 [$ X6 H$ L' |+ H
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>/ ~6 I) r3 ]' ^0 `- h$ x) B$ q, n. c! C
    <span class=C_IMGUS>US</span><span class="pron">/<span class=C_IPA>dɑ&#720;ɡ</span>/</span> </span>
    ) E4 O0 s1 A. s7 I6 H<span class=C_BODY><span class="sense-block">/ _8 S4 G9 E/ d% w# h0 d7 N
    <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">% m: \1 f6 B2 |% M
    <span class=C_DCH>讨厌的家伙,惹人烦的家伙;失信者</span C_DCH>7 {! H4 @/ B% w7 `
    <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>
    4 v/ u- L2 _  T: @1 z<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">
    . ?# o  R6 s! U) w# K<span class=C_DCH>丑女</span C_DCH>
    . E9 ?. t5 y5 k( y% @' ~. g9 K4 z<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>& I7 f% Z! L4 A0 Y  L+ y
    <hr class=C_HR1><a name="C_hkz3"></a><a href="entry://#C_topz" class=C_NOT>&#160;3&#160;</a><br />
    4 z$ L7 R5 |5 {1 Z2 p/ c<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>
    & M% P8 B) d/ i9 H8 t* P<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>
    - A6 R( }1 f, K# W0 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>
    8 F; U4 m5 l, l, f% I<span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>  }" S$ F6 o+ }6 g+ K
    <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>
    : B$ ^1 C3 o) q8 \7 r  X' {<span class=C_BODY> <span class="sense-block">
    & T: b- J! q+ R3 _) `<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">
    8 v0 ]1 R" U( t6 h3 @6 r<span class=C_DCH>跟随;跟踪</span C_DCH>
    6 c3 `) `2 ]2 Z4 f. S3 J# t- d<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>1 }  H  w, s& K9 t  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>
    & }$ q2 X! V& e9 z: o  e+ c* m<hr class=C_HR1><a name="C_hkz4"></a><a href="entry://#C_topz" class=C_NOT>&#160;4&#160;</a><br />/ n4 w% p# z: N$ i9 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>
    ! P. `1 ?3 b: e9 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>7 |: D$ S  }' e1 [$ S8 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>( h; M5 D' c! Z
    <span class="pron">/<span class=C_IPA>d&#594;ɡ</span>/</span>$ B: E; R) k8 @
    <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 T" v/ p& x  b  Z! W<span class=C_BODY> <span class="sense-block">( a) V- H( A! @# o
    <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">
    , U+ ~, y$ M; G# M' z) E<span class=C_DCH>困扰,阻碍</span C_DCH>- y- d* S5 \+ j7 t  _% _
    <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># R& e1 J1 A/ j$ g
    <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>
    9 i+ F' C: J; r4 x+ C9 e! C</>
    ! `8 V. I. |9 D给你部分demo内容。。。7 c; G* }+ J7 k* ?

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
    本帖最后由 fengdh 于 2015-9-4 16:32 编辑
    3 `$ k! w7 @. ~  I) u
    bt4baidu 发表于 2015-9-3 15:367 T# N/ D& u, G5 T) _
    https://www.pdawiki.com/forum/fo ... &extra=page%3D1% I: t1 }+ m1 Q
    里面的动态功能都是 ...

    ( C( ?7 f$ |* c  v' I4 y$ D: Z
    & R, e' g3 z" [1 t& A5 ]: R已经修改了online demo,加入了对内嵌JavaScript的支持。1 k1 m" f) W% r4 N% g6 h' h
    8 Y/ P7 h# E; {" [# Y4 R
    关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
    2 X" ~; _% _  ~0 N不知道你有没有兴趣一起开发?我想做成这样的
      e& R2 y2 B+ m% L# V/ Ehttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
    , H  }: m2 E2 c2 c) K8 r- K$ ~! f; e3 h3 _9 X
    / W: B9 t0 d: l( ^
    有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
    1 @. A! g: A2 D- J9 O

    1. 5 v, G4 M0 d+ C+ o" l' `4 M& b, R- \
    2. (function _my_code(window) {3 v, U+ v, Y4 v, N
    3.    function u(c, n) {..}
      . K  g! E5 R& n5 {* M
    4.    ..  4 j$ N4 C! x' m9 B2 s, k
    5.    function w() {..}9 E$ ?1 |; @/ y7 s' Y' ^
    6.    var F = 0;
      5 D" s! ^& L( j3 ~

    7. 8 {8 u3 a( v7 z
    8.    function i() {
      * p. E% h- K+ w
    9.      if (!F) {
      & n2 g2 t- }- h1 r. ]8 X4 [
    10.        F = 1;
      7 [# T5 X; c& q" o, M
    11.        w();' R+ \8 D, V1 ]  {
    12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);7 H* T& i( Z: }" ?
    13.      }
      ( r) N" n+ x; O' N+ w( Z
    14.    }/ p9 {5 \" c; L
    15.    if (window.addEventListener) window.addEventListener("load", i, false);, l- k$ t% r' i$ @9 J8 n
    16.    else window.attachEvent("onload", i);( l9 n5 X, O- {
    17.     # g  t1 v  [$ f8 j; U3 w( x
    18. }) (this);  /* In global scope, "this" is the window object. */
      ; ^6 L. r/ U5 F. {5 a9 @. Z0 Y
    复制代码

    4 |* e: j4 `! l6 O9 H1 w, R4 E6 T0 A; y; E8 z$ _, b! z
    具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
    " p( }# \! y- J# \9 C8 p- N, D% N. z2 ?. z
    另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

    该用户从未签到

    发表于 2015-8-5 11:12:55 | 显示全部楼层
    本帖最后由 Oeasy 于 2015-8-5 11:18 编辑 , f& S$ f  q; n2 F! n" ~
      n8 e( P. ^& n2 A+ ?

    % {  ~. r' ?3 A; }
    3 X' t$ J, _9 ?8 L2015年8月5日 11:17:337 w3 ^" b% Y* q9 Q& g# h9 D
    换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选上,不然排版都没了,换言之,也就是目前不能自动识别、加载同名mdd文件噢。
    7 L+ Z, p. L. N8 b- l<del>想法相当赞啊,不过刚试了,貌似还查不了词噢。</del>
    ' o& H: [$ s2 X! `7 ^& |4 G6 U0 s8 X2 }8 w& r" N$ L' p! b5 G  R

    该用户从未签到

     楼主| 发表于 2015-8-5 11:17:38 | 显示全部楼层
    Oeasy 发表于 2015-8-5 11:125 l. m% K' T2 @4 T! E/ @
    想法相当赞啊,不过刚试了,貌似还查不了词噢。
    / t0 B- \# a" _4 Y! R/ m' S
    & _# H: v- Y) W6 X& }# Y
    可以查字典。7 I; e( W' W2 E  D! m8 [( }
    % T0 q1 }5 Z4 i+ s7 O  p0 h( r
    1. 需要先选择本地字典文件。- ~% m1 j! b, E6 ~% o8 R% f
    2. github可能比较慢,多刷两次页面更新,等那个写着paddle的输入框变漂亮了就说明加载成功了。参考截图。) |3 T) J9 M" R5 i* v7 A5 P
    3. 写着paddle的输入框,点击一下,按回删键(backspace),就可以输入新词了。

    该用户从未签到

     楼主| 发表于 2015-8-5 11:20:10 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-5 11:21 编辑 5 T& b& D  [* H% m; Q  }
    Oeasy 发表于 2015-8-5 11:122 b- k3 g) w& x
    2015年8月5日 11:17:33
    , E* ?1 h0 p* z3 ^; N换了浏览器可以了。如果词库文件含mdd,【选择文件】必须把mdd也选 ...

    4 e9 N) |2 M) t/ i* G4 e
    ( u8 D! M+ N7 v- Z- K出于安全原因,浏览器是不能自动加载文件的。不过插件可以。* g: S3 L3 x! q' @
    0 g6 D  o+ `2 v6 v
    关于排版,正在考虑允许同时选择CSS文件。$ A( I3 N+ E9 `, v6 q
    : ~. l/ S, w+ C& F/ O
    IE是个坏孩子,暂时请忽视它。
  • 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>; P4 B) H# f) v3 b3 c
    内跳还是有问题。。。
    , S& |) Y) O$ z: s/ J2 a% j没有再分析或直接替换成#C_hkz4

    该用户从未签到

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

    本帖最后由 fengdh 于 2015-8-5 12:41 编辑
    : Z" G: a- S+ T' |- z
    peterdocter 发表于 2015-8-5 11:47: U8 F1 H' S; _) L- C* Z
    dognoun | noun | verb | verb
    # W; l% u7 g. p! c内跳还是有问题。。。4 w% p5 x6 ]3 O9 c
    没有再分析或直接替换成#C_hkz4

    4 V" M: ^' C, l! l& Z' k, u
    6 P' l7 ~& ]( B5 r1 E) e& N谢谢意见。/ E' r) E& u, M: _* v5 ~
    5 x9 F8 M% q( Y1 h
    含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。: v" l0 }& y5 \* G& m; s% z

    . V! x5 h( O& G9 K: g6 D我有一个LDOCE5字典有类似跳转,好象是用于不同词性之间的快速切换。我不清楚您所提的情况需要跳转到页内何处?可否说明一下。
    " t8 ]  J& H, D: y# K( ~! u7 s我猜想这也许不是MDict普遍特性,而是一部分字典的特性,实现方法和策略各有不同,需要一个扩展机制来分别实现?
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-5 12:51:47 | 显示全部楼层
    fengdh 发表于 2015-8-5 12:139 L. P0 W/ K- D2 Z* e
    谢谢意见。
    - D  I. x: h- q) y. s
    & h/ Y0 Z- b9 [含 # 的页内跳转确实还没做好,可否问一下您用的是哪个字典文件我好参考一下。
    1 x5 ]+ T2 V& k, I
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

    该用户从未签到

     楼主| 发表于 2015-8-5 14:04:29 | 显示全部楼层
    peterdocter 发表于 2015-8-5 12:51/ k0 E8 t+ N; C8 H
    https://pdawiki.com/forum/forum.php?mod=viewthread&tid=13117

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

    该用户从未签到

     楼主| 发表于 2015-8-5 15:41:07 | 显示全部楼层
    peterdocter 发表于 2015-8-5 15:03
    ( [) i- i3 G3 E6 w0 G5 C" u可能此词典作者还没有公开过吧。。。. ^, l9 s0 d6 U* n% }) p( V
    ( B0 A5 O5 T1 c! u
    dog

    . v, R4 f! N, q% _6 U+ e# {4 H6 K5 w* _9 F: @6 C: [* M
    谢谢您提供的信息,通过重写<a>的href,现在页内跳转已经可以正常工作了。
    4 J# O2 t: N% S) |# T$ c7 W0 @; ?5 @1 \. g8 E
    您可以在顶楼提到的MDict online demo页面确认。

    该用户从未签到

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

    该用户从未签到

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

    + E" S( F! R0 a# W+ h# a5 ~
    ; q3 p3 U  N! q* s3 A# B2 H4 Y3 N5 [* h感谢楼主辛苦工作。1 s% B! |# z1 e" w  y. g
    反馈一个。
    ( k- C* M. p/ W查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至不能用鼠标选中复制 OR 粘贴(进)查询框里(的内容)。
    $ x( x8 x8 r& z! m3 T: }, U( G+ H如图,我想复制查询框里的 faint ,貌似不可以。我想粘贴剪贴板里的东东进查询"框",貌似也不可以。/ k" r, q4 d: o( |' L# f

    4 B7 z: {7 v( j4 @  L9 h1 e1 N7 `) m/ E& [5 D# D
    2 E) v3 u3 x" v$ ^- o2 B

    该用户从未签到

     楼主| 发表于 2015-8-6 08:51:32 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 14:12 编辑
    2 n, _: N, G* {9 g# v2 Q
    Oeasy 发表于 2015-8-6 08:09
    + b/ {7 [9 I; B- N; ?感谢楼主辛苦工作。2 m1 c1 [. z! P2 l/ E* o7 m; w
    反馈一个。
    7 i1 p" R7 p1 g5 w查询框不太方便,要输入新词的话,需要先光标删除旧词(字母),甚至 ...
    1 {2 \" N: V2 ?$ J, [/ W3 b4 V
    - p2 J& C* ~# t& k
    这只是个概念验证/功能演示版,离完工还远着呢。
    . _, S# B! B& h, Z现在专注修改核心,界面等有空慢慢改吧,  j$ G, e# f# e: I% y: q: {/ E
    真希望有UI/UX经验的同道加入合作。6 V% b6 O" Y0 Z9 B
    8 D" w! w/ J; [- U1 m; P) U" u
    具体到这个输入问题,我会替换autocomplete部件。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-8-7 08:54:21 | 显示全部楼层
    ok927 发表于 2015-8-7 00:34
    " m: Q! X: \0 S- Y! U" G: M: d语音方面,建议支持mp3格式的mdd文件。
    4 P+ q; p/ z: s/ Y. ]% I6 @
    已经修改了程序,应当可以支持MP3语音。同时改善了候选词条的显示速度,更加流畅。4 ]  \" R1 m- \. `9 Q2 @

    2 @, h3 b) ?+ e: |" v- i不过我手头没有使用MP3语音的字典文件,可否提供一个用来测试。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:03:23 | 显示全部楼层
    fengdh 发表于 2015-8-5 15:41
    % n1 ~" Q  m8 n* n( p* R; o6 O) n$ @- v! L谢谢您提供的信息,通过重写的href,现在页内跳转已经可以正常工作了。
    5 s' Q+ X9 B8 B0 k# t7 b" |" J! b: ~3 Z) I; y- t# g
    您可以在顶楼提到的MDict on ...
    : x5 D3 E; x2 i
    不错!不过还有一个bug* J9 m2 r" v# ~9 l# l
    <a href="entry://dogged" class="C_REF">dogged</a></
    ( f+ @  @4 S' \& ?  m& G没有进行entry://进行二次替符合你定制的查询格式

    该用户从未签到

     楼主| 发表于 2015-8-7 13:11:20 | 显示全部楼层
    本帖最后由 fengdh 于 2015-8-7 13:32 编辑 : u8 r5 y# V5 b; |9 z! v) P
    peterdocter 发表于 2015-8-7 13:03
    : f* b7 `" r6 @5 ]% G- f7 F不错!不过还有一个bug
    : s3 ^: ?( B* g5 Tdogged

    . S" y5 V, {# e, k' l$ n2 d5 B  [0 ]& z6 [2 Q# S; k
    这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。5 E% ^' Q  p9 X% a2 j: r3 i
    ( Q  G3 _1 q2 c
    当点击形如 entry:// 非页内跳转链接时,延后动态解析,如果字典中存在该项目仍然会跳转。4 h# [6 s& a- A0 @- G( U+ s

    ( F* _9 E  c+ E$ S- K4 |不过您给的 dog.mdx 里只有一个词条,自然无法跳转了。/ f. T' K( Y* X  ^; Q
    1 i! n/ ]( J9 I; i/ g$ v6 G, E8 d
    已经把不论页内页外链接都改成延后解析再跳转。
  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 1914 天

    [LV.Master]伴坛终老

    发表于 2015-8-7 13:18:56 | 显示全部楼层
    fengdh 发表于 2015-8-7 13:11
    5 X3 K# C+ |+ J0 j这个其实不是BUG,仓促修改有点前后做法不一,我以后会尽量修改。7 Z; w" ?4 H0 q  R4 D% m& E8 W0 q6 Q
    0 m" J& n" q% [- p
    当点击形如 entry:// 非页内跳转 ...
    8 D; o' ?% o2 z5 E8 ]( I
    再给你demo调试,而且可以连跳了 + O7 p# N9 x; j6 G' s

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2015-8-7 13:41:24 | 显示全部楼层
    peterdocter 发表于 2015-8-7 13:18
    4 V( K" K& U( @再给你demo调试,而且可以连跳了

    5 L: ~' b$ a4 I( J, [0 {& }我已经把页内页外跳转都改成延后解析了。所以状态条仍然显示为entry://***。请确认一下。' R- w' D* l5 `7 m5 e1 m( a
    6 z5 W( L. `) E. ]- }3 N
    另外看到您后来给的dogs.rar中出现了 mdxentry:// 这样的链接,应当也是字典内资源链接。除此之外还有类似的吗?
    8 \: ]$ d) h! `" P* t  W
    - T3 Y3 b# M& T7 J- `9 }! Adogs.mdx语音似乎使用了mp3,能不能提供mdd文件我好测试一下mp3支持。0 p7 ~# ~* S" j; Q, S! Z! S" p( m
    0 u, E+ a) h% R( t" X# P3 V- ]
    回复验证太麻烦,试了试发私信不知有没有看到?

    该用户从未签到

    发表于 2015-8-30 20:56:23 | 显示全部楼层
    本帖最后由 STFU 于 2015-8-30 21:51 编辑 $ Z( B: P& l* H9 z1 q
    5 q% X$ D/ J& T1 [0 F: D, r; K
    支持!. `7 a( q5 Y4 g8 C
    原來樓主就是因為Chrome插件而開發的
    # Y9 v! K! Y" Rhttps://github.com/fengdh/ChaZD# b* w; c( d  D  s2 T7 z

    % X& s  ^+ q2 g6 M/ `/ h0 ~今年度有可能融入到插件裡嗎?

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2015-9-3 08:27:10 | 显示全部楼层
    bt4baidu 发表于 2015-9-1 17:51
    % n; E: P, Q5 ^! N  ^词典里面有javascript脚本的话,似乎解析不出来
    % C& {1 j* t: D/ a8 m2 c& R' l
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    该用户从未签到

    发表于 2015-9-3 15:36:08 | 显示全部楼层
    fengdh 发表于 2015-9-3 08:27* P. t* _! O: c+ x7 F4 v3 Z
    原闻其详。如果能够提供含JavaScript的mdx实例来调试就更好了。

    ' p; m, M8 D7 L; f4 {' ~- \% chttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
    / z7 p! @. c5 m# M里面的动态功能都是js-AJAX实现的
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

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

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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