掌上百科 - 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 编辑 " C0 N- p& J0 j, Q. ^8 i
bt4baidu 发表于 2015-9-3 15:36
1 h& W0 N, T6 o+ B  `+ _: ~" chttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
- W6 x, D$ ~% M, \里面的动态功能都是 ...
0 R/ V5 F' g- }* ^* X/ x" S% o
. A: g5 t9 O! d! n/ y& s) z
已经修改了online demo,加入了对内嵌JavaScript的支持。
1 I3 D! R/ p+ ~+ W! G
4 z. q6 m0 I. m/ F关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。( w8 i' c* ?4 a  F" u/ ?! Y2 X
不知道你有没有兴趣一起开发?我想做成这样的
3 |2 s: E9 d% q& Whttp://www.hi-pda.com/forum/viewthread.php?tid=12106727 \+ Q: J+ u9 ?1 y5 I" c1 I
* `$ K( |+ @- M& u1 @
0 T) p6 G' O* b  ]( a' ?
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:9 `6 b. `# O7 P/ E2 Z1 j* M
  1. / F' i' o0 @& I
  2. (function _my_code(window) {4 m* o; B8 [* V+ r! X. ^
  3.    function u(c, n) {..}
    5 [6 ?9 q& g- b$ Z% Q
  4.    ..  
    ' g/ }& m. B$ b! w4 G
  5.    function w() {..}5 j& a5 Y- _7 c& _& ^7 y
  6.    var F = 0;0 e) x% D4 f. I6 ]4 M! H
  7. ( ?9 y1 y1 r7 H  x4 c
  8.    function i() {
    * f  y5 [, t9 O* ~
  9.      if (!F) {
    ! f+ \+ E: h1 p! T% w. L9 }
  10.        F = 1;4 o" L4 J5 X, t! D4 e- e
  11.        w();
    - E  g( }3 Q, B6 C3 N- {
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    8 a7 E$ ?7 B1 y7 I; a
  13.      }
    2 R) p' s: y. y2 L, A( g. s
  14.    }* I0 r, v5 |: [" H% f* g' H% N
  15.    if (window.addEventListener) window.addEventListener("load", i, false);6 k# n. @% N% z0 M" r  j5 Y
  16.    else window.attachEvent("onload", i);; l( c+ J8 Z% d
  17.    
    / l2 u1 s8 {6 U8 v& {) z
  18. }) (this);  /* In global scope, "this" is the window object. */1 c1 i1 V! E) o
复制代码
" e" k) J+ J  ~, ?0 a* g. [, q/ p
/ C: [% t5 v; i0 O# |/ S6 N, J
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。+ m& `3 _( n5 h* N

/ k# S+ K- U7 h& |6 g0 b另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
+ E( ^! T% R. z- m; Q) h3 t已经修改了online demo,加入了对内嵌JavaScript的支持。
+ U5 F7 O$ @: j" C8 d
# Y' @7 g( `3 v& N. Q; _关于插件,联系过ChaZD插件的作者,看他能 ...
0 B' @2 x# t$ u2 h% ~# W

  T- g! q3 P- U' i差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
/ l8 A9 h$ `5 {要是可以左边双击网页上的单词,右边直接出查询结果就更帅了/ f' t6 U4 {/ [* n, e2 `" n& J4 t
) a+ k. t- @: S  q$ ?" E; p, a
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题# v) }$ x' p  d  N, ^
当时倒是没考虑模块化那些,以后有时间再改吧5 e, {. r; V, a1 ^+ t4 ]

2 P  D& |/ J) t! S" L& O一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
, }* |& x7 `2 ^4 K4 b& Y
" ]' D/ U1 m# x0 t另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
" O7 C. t1 R# i# l3 H& N8 R/ s/ [6 c

  O6 h+ x) g- Zl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
$ F; i5 K# F6 W6 N2 Mresize是为了对齐单词用的: O3 ?) n9 U5 S0 ?* e. l
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
1 X" ~; K% ]7 }

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
$ G) h/ U" m. s- [# C  g3 [+ s差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

- |7 j; K! i$ N7 c* u( C画个图7 z/ y+ i0 {- e( g2 e. Z/ j

: y9 }3 P: x1 m& X' x2 K

该用户从未签到

发表于 2015-9-9 11:01:33 | 显示全部楼层
非常感谢提供下载
  • TA的每日心情
    开心
    2026-1-23 23:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 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的每日心情
    开心
    2025-8-21 03:22
  • 签到天数: 12 天

    [LV.3]偶尔看看II

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

    该用户从未签到

    发表于 2020-7-17 22:37:05 | 显示全部楼层
    这个今天有又试了一下,很方便
    3 t) s+ T5 Z5 _+ e& s
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-11-5 18:35 , Processed in 0.018925 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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