掌上百科 - 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 [' ]% _1 f/ u
bt4baidu 发表于 2015-9-3 15:36
4 Y* F( y+ ?: q2 \0 O# {. Q9 Qhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
0 q4 [+ m8 M% g- q# \' }& V5 e里面的动态功能都是 ...
! d; K9 o/ m/ q

. l3 c) @6 o+ g; F已经修改了online demo,加入了对内嵌JavaScript的支持。
' l1 S" p. S: F' M1 _# D' z. b+ x8 l2 Q0 x) ?: J& y3 E# `# x, Y
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
3 \: S& M' ]) f* \( R# Z2 K不知道你有没有兴趣一起开发?我想做成这样的9 f1 }, A- Y' y& n, j- W
http://www.hi-pda.com/forum/viewthread.php?tid=1210672
2 B* `. `4 L6 b. B2 V4 u
/ N- p+ A6 w5 \. n' m* |, h
7 O+ {6 @/ v% [$ L9 }有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
2 _% l/ t6 N7 A1 o) @! t  i: y
  1. 0 x* Z# t$ M0 B
  2. (function _my_code(window) {
    - A4 }( U" C4 E5 C3 Z3 b
  3.    function u(c, n) {..}6 |! r+ B' E3 b  E% m) x, }, p+ Y
  4.    ..  1 M' Y3 p, X; F4 @6 }1 r0 G5 t
  5.    function w() {..}1 \, }6 [) ?/ P3 s- n; F5 C
  6.    var F = 0;
    4 z# I2 I' G. `* c" _

  7. ! Y6 p- c2 B3 }1 _
  8.    function i() {
    ' h" ]$ @0 W4 V5 @4 v
  9.      if (!F) {% l. S! b. J3 M, [0 Z& L" t
  10.        F = 1;2 }2 o  P5 m: k
  11.        w();
    ) c; x; ~: [  t$ b3 r9 i' ]# c
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);. K! x9 ^6 c. w. l9 W6 ]4 U( S
  13.      }
    + c, [+ \4 ]# z" g" B' o
  14.    }
    6 [# x+ W; X4 s
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    2 g- A6 g+ t/ E$ R3 t4 ~; W' s
  16.    else window.attachEvent("onload", i);. N7 ]. U; f4 P: i) O
  17.     ; z, \5 ?, Y# Y6 I, v/ p
  18. }) (this);  /* In global scope, "this" is the window object. */$ Q# u. w  `& T! m) V) g7 x" R
复制代码
& y+ I  ^6 x/ i1 q
, x/ j, S( _: M6 x8 b# A
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。" F5 |7 n5 X+ P; W/ M9 A" r! x

( ?2 ?, ]& |& a% b! p. W另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30* s! e" V/ b; B, D
已经修改了online demo,加入了对内嵌JavaScript的支持。
. F4 C. g. y! [5 G7 h) k3 X8 M9 Q6 y$ N1 S7 `4 t
关于插件,联系过ChaZD插件的作者,看他能 ...

3 ~+ L# x; c# T7 k, b& Z0 h6 I. Q  r0 r2 U. }
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
* [6 k' T( y  ?% a( j$ W要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
" ~" o" I5 P2 P8 ?$ G" q7 g/ N  }$ d0 o# d1 |; }( p
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
& b2 Q$ g' C- q) C当时倒是没考虑模块化那些,以后有时间再改吧& w3 c7 a+ D8 N+ O

4 R3 R$ j2 R; p# I2 a一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

- E  |1 x4 J! y2 ^( Z) D, u& A4 S& x. a/ t
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
+ [/ G' `( l4 Q5 [# ]resize是为了对齐单词用的
2 y+ c& K9 ]7 d  l+ `# Q9 QquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法' O* g' x& H/ O; W* y4 \9 N0 ~* z

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07' B4 C7 O. i$ z3 R0 P
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

7 K" n  O2 f' d( ~" ~8 H! d画个图
. {" ?# s  @# J+ i! G8 R8 v- s# u1 E6 `( y: j  t

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便1 s. q$ y0 K, I3 p! ?4 W* l% |0 F
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-11 19:44 , Processed in 0.021211 second(s), 17 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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