掌上百科 - 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 编辑
+ u  L) H1 S. q
bt4baidu 发表于 2015-9-3 15:36; B$ _$ D, r; B# L* u7 V, C) ~
https://www.pdawiki.com/forum/fo ... &extra=page%3D1
9 g- p+ E' ?+ g( z' v2 b2 s里面的动态功能都是 ...

* M1 q! Z0 T8 F$ D) q* X0 b
" [6 f0 A. I' z! |& C已经修改了online demo,加入了对内嵌JavaScript的支持。5 [0 h! `! v' \. H  x
6 O# A' w  j1 r- I) x
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。* _9 D% g! n2 r5 a1 M
不知道你有没有兴趣一起开发?我想做成这样的: e; r8 {% x, X+ W  }+ w4 e
http://www.hi-pda.com/forum/viewthread.php?tid=1210672' K" N: \- _0 e

# V' U7 u4 D$ ?3 @+ \" ?% y" Z: D! O- j# i1 M4 u: y
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:* i( W0 s# w# l" Z4 d8 X8 M6 }
  1. . k' l  d$ V5 k" w9 B
  2. (function _my_code(window) {
    ' k3 B( {9 I  [3 \. [
  3.    function u(c, n) {..}9 K. G- e" [8 s  Z, R: B- H
  4.    ..  7 s4 D! m* f0 k8 t
  5.    function w() {..}
    # Y) I  q2 F, ^
  6.    var F = 0;
    & `. R; ^* C+ H2 {% q

  7. 8 L6 n  t5 j! M2 u  \0 G; t$ \
  8.    function i() {6 Q8 J8 o! ~! J$ {
  9.      if (!F) {# j; r1 y! n$ s$ O0 l0 T
  10.        F = 1;
      d( O: A: a  M+ M! W
  11.        w();
    ( E' G& n' ~0 S  t( e
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);( Z6 E% i# u  E8 X- `1 |
  13.      }  \" T( u# s+ h% [5 R  }
  14.    }: ~* {4 ]: ]5 z+ }% g& F2 C
  15.    if (window.addEventListener) window.addEventListener("load", i, false);4 x% ^& T3 a/ Z+ T9 C
  16.    else window.attachEvent("onload", i);% r" q. k* e- o7 a; e
  17.    
    % L4 u: l2 u  s0 F8 R) l
  18. }) (this);  /* In global scope, "this" is the window object. */
    1 E( _1 c0 U4 g2 G2 n  h8 a
复制代码

* R9 e) F- G% K, e1 s$ L% B; ?! l- ^! R$ p- _
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
/ e' \8 S! |" m) ?( X$ \6 h( W$ v. D
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
% D& D6 p. R) k/ Y. t6 m3 \已经修改了online demo,加入了对内嵌JavaScript的支持。/ c* l: L( q5 c% F

) c* m2 f' r" J2 v, Q关于插件,联系过ChaZD插件的作者,看他能 ...
% G9 O$ C. ^1 W: F" q

) M) R0 o& n9 L3 B, L8 m差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果0 f9 \, U) K, s% \# w$ Q
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
" z  \1 _/ }3 A" F6 z0 |/ {# c6 `4 d( q# E
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题' f7 g+ I, |: w: `0 o0 {
当时倒是没考虑模块化那些,以后有时间再改吧! \* w5 ?  p9 \  h( H1 ]

8 d7 Y, T+ ~9 M) f6 L: e一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

$ K& q7 m7 ?8 _  k3 O6 \4 m% m, x0 p' p* e# s* O
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
; T5 q" V. U* W6 P/ K# k4 }+ o$ ~resize是为了对齐单词用的, T) @+ g9 {0 j% Z# Y
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
, f. i* h5 v! v; S! b5 G

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:071 T* z. m% w* d2 M& \; u
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

9 _& d/ E) J; G画个图" D9 z0 L/ X8 H  q; q6 t
( C  e7 L# Z: J# l

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便4 m- P: o3 B- R. G8 X4 \
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-9-21 17:24 , Processed in 0.024114 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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