掌上百科 - 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 编辑
! l7 Q& y2 g8 c) }) p, _1 e
bt4baidu 发表于 2015-9-3 15:36" I% A9 i: S1 D; b. q) J6 s; g# H
https://www.pdawiki.com/forum/fo ... &extra=page%3D1
5 {3 R( Y4 I& u- _里面的动态功能都是 ...

- u! d" K3 M2 a: t' I
) b6 l6 y3 [# `" p" f已经修改了online demo,加入了对内嵌JavaScript的支持。
% k. v# I. n- v, `8 R: _7 y6 x8 X0 C; }! u1 d3 P9 f* d
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
' @) ?- F6 B2 M1 U6 {- h& _- q不知道你有没有兴趣一起开发?我想做成这样的2 k# f1 u2 o% W
http://www.hi-pda.com/forum/viewthread.php?tid=1210672
- Q1 H1 E; d, u% N& P" G! ~: V
9 K' z3 O* R9 ~: \) ^: R9 M5 c( d$ }3 F/ l, t  b7 r
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:7 X6 W# F' O4 @5 X0 v4 u

  1. $ c. V9 _9 u  j% z: |
  2. (function _my_code(window) {
    ! _' J5 G6 F& Q; Y
  3.    function u(c, n) {..}, J" g0 [3 M4 J5 J
  4.    ..  $ q9 o, |# x& _$ Q
  5.    function w() {..}
    " d  l1 x7 t% w5 D
  6.    var F = 0;* q" P  {+ P% |5 v8 V* x2 c6 m

  7. % v% `1 [9 o- l) B' y
  8.    function i() {1 s! U, a. m4 ~
  9.      if (!F) {
    / @9 U$ I$ G+ t
  10.        F = 1;5 g# f7 a8 f% `0 l/ g- G
  11.        w();
    & D2 j: M9 b) f! G
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);! D) D# u& s+ b- j# |( g6 W* J4 ]
  13.      }
    9 Y; F; c0 Z2 l# g
  14.    }  W; Z" @8 c7 Y3 \( Q, C
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    6 o/ w3 S( r; C; s
  16.    else window.attachEvent("onload", i);; F/ m% K6 f4 p9 n% K' {2 E
  17.     & G( ?+ q$ x/ i' a0 e8 N# B
  18. }) (this);  /* In global scope, "this" is the window object. *// v) a. I3 }  H& d$ w2 B( R1 C6 _
复制代码
8 E% G; a3 B$ d9 t/ s6 v' y
0 s9 l% n" z2 s. p* a4 |
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
/ h$ b  {3 M8 y  a( K1 h& y5 [' l0 p- m, R& [8 m
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
/ J1 v  d8 g3 u3 i0 |- z已经修改了online demo,加入了对内嵌JavaScript的支持。
- A2 J0 a) h( N9 B5 ?* J! H) I4 ]$ J+ M7 }5 N& Y% g4 @
关于插件,联系过ChaZD插件的作者,看他能 ...
/ u+ L5 T$ [0 ^! ]+ A5 Q

; U3 H, `2 H8 d- f! X# |9 X9 m差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果- w4 @" c8 |: p" d1 b1 |7 n
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
7 t. k4 X) B% r6 A% n  O" y7 X+ V1 p5 m, v
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题' M- V6 J- G& Z. b3 S
当时倒是没考虑模块化那些,以后有时间再改吧
. ~* w9 ?7 ~$ `  q; w- g6 ~: p. ~9 i
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

! G3 ~! D( P: G3 K8 g, _' V9 @另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

/ l" Z% J: g6 e/ n
7 z$ B4 ^2 B( X$ ?/ r5 n% cl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
4 x& Y+ J) m3 _9 {. ^. o5 B( [8 {resize是为了对齐单词用的
  Q0 X( j2 G- @- u# o5 ZquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
% c3 K7 c' f3 ^3 L4 w

该用户从未签到

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

, ^) q+ i  X. ?& N+ h. H( ^画个图
+ ~4 w! a" l7 D. d: t6 L/ n
  o3 T) [8 d1 d

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便
    / [2 Q* ]" a7 \' E& k
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-29 13:05 , Processed in 0.076157 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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