掌上百科 - 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 编辑
0 o; P4 y. }! F, a
bt4baidu 发表于 2015-9-3 15:36
7 _) I4 L/ ^1 R- `. Khttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
% r; d0 K/ j# Z, ^/ s- j里面的动态功能都是 ...
4 O* @7 T2 n7 F: T1 _, ]
# u' A$ Y) r! W' C2 |
已经修改了online demo,加入了对内嵌JavaScript的支持。
% f. H9 G( t! b( Y0 v  Q1 S0 f  w* H: Y
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。; o, ]4 H( G0 l9 n% i
不知道你有没有兴趣一起开发?我想做成这样的
" I7 I2 R" P' \4 nhttp://www.hi-pda.com/forum/viewthread.php?tid=12106720 U1 y% C9 w! C0 H$ m

% n7 b1 D. W$ d7 j% g9 A( b5 M7 x
/ b9 G: I" I4 Z1 n" C# P7 m有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:/ b# l% V0 d4 q! ]* x4 k* k3 R' ]

  1. - t# L2 C- H" T/ P- i
  2. (function _my_code(window) {' g" d* H- Q  v, |% h- b7 N+ f
  3.    function u(c, n) {..}5 y( E1 J% {2 m. A& D
  4.    ..  , Q% z" H3 S( S. T; a
  5.    function w() {..}5 `9 Q  O4 l* N" r4 T% B" }8 Q& e
  6.    var F = 0;; S5 n, @5 Z5 e1 |1 I: K6 R+ ?
  7. % b: Q! q% R# ~5 m) B
  8.    function i() {
    : E6 W$ _9 {5 p% l, z/ s
  9.      if (!F) {
    5 z$ P6 X+ h  |+ }
  10.        F = 1;8 Z$ T+ v( I5 U" ?
  11.        w();6 D4 S( v( J7 V4 P$ V# k
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);) J+ W' S! y- @; N& W; l
  13.      }# a6 v/ \- V- l4 a; L6 T/ D
  14.    }
    7 D) a; _5 W8 ?4 C( ^: B
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    2 }3 q2 ?" ~6 ]4 ^
  16.    else window.attachEvent("onload", i);
    ' p# y* D, ]# L) D& c! R  {& s( {/ {7 \
  17.    
    & j1 M9 u# O. i% e; r5 N# ]1 T
  18. }) (this);  /* In global scope, "this" is the window object. */* _7 l4 `: Y3 O2 J. C
复制代码

3 p5 r3 b( H; e7 c/ D2 w8 i9 A- e: H9 D. U
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。0 {5 ^" s0 S9 p
; m  V7 i- j% d$ _- R, I
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30' H, i; T2 S- N3 e) p5 q. h
已经修改了online demo,加入了对内嵌JavaScript的支持。
, |% ]  E1 z8 w
0 H6 q, B( |( y1 ~+ J' @2 r& G关于插件,联系过ChaZD插件的作者,看他能 ...

$ q4 G9 D" H9 a5 ?& B. b9 ]8 v$ O" g0 W  b& U% ?
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果0 e. I# h* j& I6 G( x6 N  p$ _8 U9 ~
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了6 m4 F; y6 Q' c' B$ w

2 }/ g& u) [8 ?& L9 U; Umdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题5 f$ `+ `" v, u: n9 Z5 a9 R: [" q# W
当时倒是没考虑模块化那些,以后有时间再改吧; X$ `) l8 V* n+ P8 W( K5 S: }

7 g$ G3 y" p& i6 {  @. B( ?, _一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。. y4 f$ D! b/ n) f% i7 h; P" v

3 f3 A- @- U- q$ X' k另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

' W) h1 P, Y  F& g3 }$ k" g2 X8 ?& ~/ m4 C) l$ ]4 U  h. }2 n
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询6 w+ U, w4 n# Z5 y* T  _' Z
resize是为了对齐单词用的1 l; k$ O( Y2 n6 W2 J) e
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
: S9 s: e. _* z  ?# q

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
2 b1 M/ i  [7 t- `差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

( I3 s  h* V* V画个图7 T% |3 Y& z6 E* w7 `  {* x; L

& `1 F  X' ^- s0 |5 ?

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便& Y$ S. j  G3 X; v$ c- D3 U
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-1 06:23 , Processed in 0.020718 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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