掌上百科 - 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 编辑
# K+ |' h8 j* R" d) M1 a% q# N
bt4baidu 发表于 2015-9-3 15:36
8 `/ S2 Y; Q8 P9 r9 x$ m& i0 Qhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1, s  a  {! d  ?3 E9 M
里面的动态功能都是 ...
( `. F" B" |  q
8 _% h) M1 M2 d
已经修改了online demo,加入了对内嵌JavaScript的支持。7 F& }& i& ~( S1 {; g, y

* l& U" b; K6 {; g8 g! f' T: b$ Y关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
9 e# |: o6 ~! z& K不知道你有没有兴趣一起开发?我想做成这样的' O2 O4 g  R1 X: C! K! s
http://www.hi-pda.com/forum/viewthread.php?tid=1210672
  M, V/ H! O1 G* U& p6 ]2 P' }  `$ e6 A5 f2 {* N
  n! t1 ?, ~0 p1 F- y  s+ P1 ^1 k
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:/ c9 z( }4 k' Y
  1. " }+ h. ~: J1 D5 C. H
  2. (function _my_code(window) {
    2 L6 e/ K0 c$ @* G, v$ c& H
  3.    function u(c, n) {..}- k# Y& V/ z) k( n
  4.    ..  
    ) s3 D. b: G) U# o! S+ ?0 j
  5.    function w() {..}
    : \/ h5 L; w+ w6 p
  6.    var F = 0;
    $ P1 h: U* R( ~4 _  q" S# L# i

  7. / d3 ^. c& u0 k1 d: H! E) _, {2 i2 g3 {
  8.    function i() {
    4 |  S% [" |( `6 o5 c
  9.      if (!F) {
    6 @' a" P8 U9 G1 o* o
  10.        F = 1;
    4 u! E1 W0 A. x7 g. H
  11.        w();
    / J" i2 F4 I  T
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    3 f5 y* `# _( i: L# u0 j2 C# k
  13.      }7 h: k* H' U% a" ]3 j8 x9 R
  14.    }
    7 u6 v2 `. W- E' o! {
  15.    if (window.addEventListener) window.addEventListener("load", i, false);& m2 [% n5 H( f3 C  B
  16.    else window.attachEvent("onload", i);# u* n) h1 c% m/ |
  17.     ) X5 U8 g( M- g/ Q
  18. }) (this);  /* In global scope, "this" is the window object. */
    " K- A& x# N. t( k# z# y3 z
复制代码

0 A+ s, F" A5 \  [
6 ]% W- k0 Q  Z/ q具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。7 Z/ `8 R4 ^" D* J+ @
4 m7 z6 S  E# m9 |0 i$ {- N2 n6 a# V
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
" i- ~4 Z* H% K6 D已经修改了online demo,加入了对内嵌JavaScript的支持。4 r& E# \; {2 t) o
' v" d& O7 E* K
关于插件,联系过ChaZD插件的作者,看他能 ...

5 h! e' V& e* n/ O2 H
: [" D1 E& M6 ^4 y1 y1 u8 r差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果5 d3 L: \, o! y, D
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
: x, p( `$ z7 y' i( B8 p9 d9 ~6 ^) V$ E2 M& e
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题/ B$ U" p1 Z6 p
当时倒是没考虑模块化那些,以后有时间再改吧8 Z/ x* N6 s8 z9 \1 b

, Z6 R, V3 X: i( s% Y一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

) s. l" f, b( b3 p7 H( c4 X另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

# t4 `: K- S, p8 r3 d" e. p7 i, _1 ~% C1 l+ @+ Q
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询9 Y# S' ?, l% d# B6 e
resize是为了对齐单词用的9 v+ p% S# i$ e2 B  [5 X
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
* r8 O( Y! c$ X9 c. z5 v/ {

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
  L5 S. e' q3 n) z" E差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
7 x" V2 T3 ~9 {4 ~9 M7 u  K0 b6 p
画个图
7 G! K3 Z! a; T; s4 a& S% x9 o5 O( ^' @2 C0 `/ F7 u4 o

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便
    ; j# a- S$ j) |; b- s
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-4-28 05:09 , Processed in 0.019022 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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