掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: fengdh

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

[复制链接]

该用户从未签到

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

该用户从未签到

 楼主| 发表于 2015-9-4 13:30:21 | 显示全部楼层
本帖最后由 fengdh 于 2015-9-4 16:32 编辑 6 [7 P9 L9 }7 P9 ^+ @# Y8 P
bt4baidu 发表于 2015-9-3 15:36
) e4 a# u, m$ l4 d2 k7 u  Whttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
& S4 q3 W+ \8 j8 d: u# }( z里面的动态功能都是 ...

5 ~" J, m% d: Q1 Q1 q3 b1 W2 }5 X3 h! y
已经修改了online demo,加入了对内嵌JavaScript的支持。
$ Z) S( p  O7 I. X8 ]1 I$ b9 O
2 O  W' X  B* }关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
6 @( a' I; K9 q+ G/ v不知道你有没有兴趣一起开发?我想做成这样的
, @1 B( T7 E4 P8 l% f, n* chttp://www.hi-pda.com/forum/viewthread.php?tid=1210672" L" R; {: H# K* v, [, p+ X
! o* k5 c8 x# f4 F6 V# e

3 s7 p- q+ R9 ^) w* [+ Y4 [有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:' m( o# d. X' n" I. t" v* I
  1. ! _$ M3 i4 E* P
  2. (function _my_code(window) {
    8 B9 {9 x6 x& q" q5 C+ ]. L3 v
  3.    function u(c, n) {..}
    ' w; e( d/ f4 t2 O6 R
  4.    ..  . K" J$ o" S* v- v* y# Y. b
  5.    function w() {..}5 j7 M! O* ]2 [6 \- d
  6.    var F = 0;
    ; I9 `/ P. P- Z) }4 D+ ^

  7. , \4 c6 x( S; a0 M* y( `
  8.    function i() {
    & z  k( b* O& \# U$ ]! {
  9.      if (!F) {' d7 T% b/ V  `- ?/ r- i  {
  10.        F = 1;
    5 [6 F  k) O4 P- S) X" t9 `- w" K
  11.        w();+ c: l" V& D- \( ]' }- U
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    ) J% B6 U* z: l
  13.      }
      q- o4 M8 u" i6 [, _* B
  14.    }
    / Q" E( W, E) M1 @
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    ' K& w: p* K8 G' M- C6 I6 Z
  16.    else window.attachEvent("onload", i);
    5 K" _2 D; V, [: [
  17.     / U% O% B( i* P2 f- t( J# {+ Z
  18. }) (this);  /* In global scope, "this" is the window object. */
    * }. Z  j% M4 h1 W6 X
复制代码

* ?0 @' L4 I4 D/ G/ q4 s5 E; B+ Y' [! b* F  b+ f8 B' }$ N5 n
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。; ]. K, p% }/ ]& }9 z1 X2 G

. v5 g( F7 O9 e: p' i0 g3 M, Q* S! u另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:305 s0 T9 f) b% j3 B& c9 l9 v( G" q
已经修改了online demo,加入了对内嵌JavaScript的支持。
. i, P- ^4 o+ A) p2 }" |9 ~0 Z9 x+ n# b' S: W0 U2 x; ^% r
关于插件,联系过ChaZD插件的作者,看他能 ...
4 S8 P1 b' F% @( E
- ?4 r0 R" h5 f8 G+ B9 U
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
' T8 v3 N; R$ q* G- O要是可以左边双击网页上的单词,右边直接出查询结果就更帅了* U* }* R- M) m

1 E) v" H) T; `5 Q# I, Tmdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
# I4 A( |% [( [4 ?+ N+ d. y当时倒是没考虑模块化那些,以后有时间再改吧
% |7 G, S" N5 E. [, A& E, p+ C( V) _* Z6 Y6 Y5 y' C, ~5 R: V
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。5 @1 u; e- [5 T" T* ?& M: A
" g% C* m, E0 K, V9 ?
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
' `# ]* V1 f$ S' |

  r2 @- F: @% `# ^. Bl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
6 W" S& J2 a3 u# y, U, p# ?resize是为了对齐单词用的
! h% N! o+ W  d; [# e- q7 f$ WquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法3 }! H" t: o" L( H9 B  |* m/ ~

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
1 u  {+ }4 p" G& @# \1 X差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
" }: O* F9 f6 t* {/ l2 B
画个图
! g* Y/ `; m4 }6 e5 k' C4 s2 |& k) V( r3 j

该用户从未签到

发表于 2015-9-9 11:01:33 | 显示全部楼层
非常感谢提供下载

该用户从未签到

发表于 2015-9-29 16:28:58 | 显示全部楼层
好像现在的bluedict 7.就可以支持Javascript功能
  • TA的每日心情

    2018-2-6 10:27
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-10-4 16:49:21 来自手机 | 显示全部楼层
    高科技啊。可以放这个网站一份不
  • TA的每日心情
    开心
    2019-8-8 16:36
  • 签到天数: 397 天

    [LV.9]以坛为家II

    发表于 2019-10-31 23:19:11 | 显示全部楼层
    太牛了,可以支持多本词典不?
  • TA的每日心情
    擦汗
    2022-12-2 08:35
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2020-7-16 16:04:11 | 显示全部楼层
    大神可以弄一个java的解析库吗

    该用户从未签到

    发表于 2020-7-17 22:37:05 | 显示全部楼层
    这个今天有又试了一下,很方便8 I" W! y. o' F/ z+ E& t4 Z
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 22:03 , Processed in 0.047316 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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