掌上百科 - 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 编辑
1 ^; a% w3 B5 K7 H
bt4baidu 发表于 2015-9-3 15:36
$ E# z! P1 H1 r0 @7 U. uhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
% q; s, o2 p; Z; ?9 W里面的动态功能都是 ...

. k- m) K# B& M. o( F5 v; h- R
7 e" s% s/ X0 _2 z0 I" `1 M* F已经修改了online demo,加入了对内嵌JavaScript的支持。
# ~/ A5 K1 W1 `; y  N% q7 J8 M6 w3 b& Q; d
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
3 J& ?8 }; i( i: }% [! d% a不知道你有没有兴趣一起开发?我想做成这样的, ]5 t/ u/ x+ q5 w" N0 O1 V1 F
http://www.hi-pda.com/forum/viewthread.php?tid=1210672
$ ~4 [) V. g5 H
* s: H1 ], P% w0 t) D3 W
  L7 u$ I* R1 f4 j4 c3 B& V  f有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
; E+ P' W+ Y9 V, d/ d- W8 i/ i
  1. % }, O. a, I* @2 i9 J" s4 ~
  2. (function _my_code(window) {1 Y1 K3 L6 ?7 g/ ]
  3.    function u(c, n) {..}
    5 Y4 }7 ?5 x$ \" b' d* f
  4.    ..  9 D+ o5 ?8 ]0 f% q4 L
  5.    function w() {..}
    1 R0 _/ l( y5 f* R' ~
  6.    var F = 0;# K  w" w  ^) o1 X* b0 x
  7. ! Y9 {( q+ H; i% a
  8.    function i() {! U" |) Y. V& Q$ g: m2 `
  9.      if (!F) {
    5 h! d1 q. P+ g! _! E
  10.        F = 1;
    # l# X1 O8 [* P- m4 Z  ~+ v) C+ f* F
  11.        w();
      g6 o8 C2 S# e2 l% o
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);- \. h, e( I$ N9 V
  13.      }
    . f1 [7 y1 \4 {6 N* U& B$ V" ?
  14.    }1 H( G$ L/ h5 h7 x
  15.    if (window.addEventListener) window.addEventListener("load", i, false);+ l: `  y4 L, A3 _. w* O' t3 d
  16.    else window.attachEvent("onload", i);: q+ ~5 ^2 a3 X/ ?4 n: X
  17.    
    1 \" n; r! L9 P( l6 O
  18. }) (this);  /* In global scope, "this" is the window object. */9 `3 b, q7 t: t  U
复制代码

1 ^. q! d" x: N7 c
4 A4 X8 v5 U! R& M( u具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
2 l9 j4 ~* J/ S7 S. Q$ q7 y3 [! n1 o; ^( F( T
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30  |) m8 [: e5 q; r7 J/ j
已经修改了online demo,加入了对内嵌JavaScript的支持。& Q$ w- k$ e( `6 o, A' c& Q2 z8 T8 N: S
3 K6 F6 B) |" Z* f2 L- h3 i/ x
关于插件,联系过ChaZD插件的作者,看他能 ...
  y. l' S& x1 Y. f0 k/ q
" I8 l- n# J0 z2 j# Z" P3 ]
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果; m& X! u8 S( n. R
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了6 a; z' v5 @+ j6 O

4 b' O" E3 I& ~4 O8 u# f: _mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
, @2 F5 O  ]2 V/ R  `当时倒是没考虑模块化那些,以后有时间再改吧! Y9 V, p5 [% j. C) F* Q( u4 O

3 J8 b2 J+ z8 |' C; M" r一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

+ W1 E4 t$ i3 c( j) E* u$ a& F# u# B% e6 }
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
6 Z) w: p! P  O$ B2 F, q4 Rresize是为了对齐单词用的
8 N; H/ O6 b: }* U1 E# TquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
5 _. d9 F( m  \' O

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
* v  g/ Y! w9 l# v9 I6 Q差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
4 s, B4 }3 Q1 n' J; z+ v1 t
画个图
" l4 C, J$ d4 c
4 E( F* g2 a# D7 H  l* c0 b; z

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便
    - F  Q! e! Q# H( w, j% C& w) F
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-4 01:33 , Processed in 0.020252 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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