掌上百科 - 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 编辑
$ p7 n% r8 n/ O' M+ r# q0 ?
bt4baidu 发表于 2015-9-3 15:36
' S$ H: u3 w0 {6 D: Bhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1& _- j. ?. C/ n! Q
里面的动态功能都是 ...

7 w/ e$ t2 i! A4 J3 }+ u1 a# i$ E  O* v
已经修改了online demo,加入了对内嵌JavaScript的支持。( Z* {+ j0 T3 ^; h7 ?
# [" q4 \, d: ?6 h5 C- z
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
! L- @2 N6 q- X9 Y5 ]) |( `不知道你有没有兴趣一起开发?我想做成这样的7 N/ B. ?8 i+ t& t5 _
http://www.hi-pda.com/forum/viewthread.php?tid=1210672  ^7 p- F# Q! s& ~* y  m4 @+ q

- ~+ ^6 b8 e4 v: U4 g, I4 `7 U" v( A  R+ t) y* c; t) c1 D
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:4 C2 h; W. M) E5 D( o5 R
  1. ; [2 V7 _" Y. y$ U" k
  2. (function _my_code(window) {2 Z. c: _6 p% }1 u4 m
  3.    function u(c, n) {..}
    $ W/ ~, e9 {1 i7 z4 B$ ?3 U
  4.    ..  0 i  r8 ^# P0 H* y- B( u0 o! ~  R
  5.    function w() {..}
    1 ]0 n5 ^/ o7 v! \
  6.    var F = 0;
    . x4 M  [) z1 y, i5 |  V* D6 h2 r
  7. : [5 g9 f* c5 D/ ]+ \
  8.    function i() {
    , q0 T9 N6 g9 j8 @. D, b& v: @* _
  9.      if (!F) {
      |8 K) f5 D2 E9 Z
  10.        F = 1;
    $ W' R% q( ?( o
  11.        w();
      k, w  b- |! ?. e6 j$ |
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    7 ]. M9 N6 V+ ?
  13.      }- X" h8 u( _* T! h
  14.    }
    2 s) ~% n8 z4 h7 h( }- Z6 L
  15.    if (window.addEventListener) window.addEventListener("load", i, false);8 F0 C7 c. @! A$ c/ w2 q; j8 x
  16.    else window.attachEvent("onload", i);
    ! p8 X1 R2 f5 i
  17.     2 l" m/ N, ?% }7 [9 s
  18. }) (this);  /* In global scope, "this" is the window object. */
    9 v- L0 W/ V: [8 L: o( r( `
复制代码
* Q. w. R! n0 @$ W& {
. V5 I) L, \; Y( }$ x
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
2 V3 p: h3 G) t) h4 z- X! G8 k$ X4 D6 q
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
+ n" x; I# J0 j# B' J已经修改了online demo,加入了对内嵌JavaScript的支持。& Y5 J! q( N7 V, j
$ H6 V; T3 R8 {: `% C
关于插件,联系过ChaZD插件的作者,看他能 ...

* G) E* q0 S, g) z; ~* i0 v' u& q+ L7 l: X& ^0 n9 B
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
# z8 W/ ~! A& `' G要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
; g/ u) y& Z0 Q5 \* j, V) r
; V. i: V8 m7 }% l9 omdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
1 H* U$ M* W* m+ o当时倒是没考虑模块化那些,以后有时间再改吧
+ T, {+ p3 u  Q! l$ @: C$ C
( c3 i3 H* C- g一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
$ G9 l% V: G( p; I7 _
6 I- ~' |7 h8 ?7 z1 e' z% M5 B另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
& x% {5 R1 `( d4 N& {0 O/ ~- o

* P$ c- r) g" N1 Dl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
+ e/ l2 |, l! D! r/ R- w7 ]resize是为了对齐单词用的/ E3 @( ^' \( r- I6 F/ _! U5 E
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法- u" X/ p( Y$ D4 o1 e, Q1 m5 T; }* y

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
* y9 ~" w4 A/ j7 b9 O% A差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

7 r$ \. f, g$ [1 @  o. U& k画个图& i1 {2 b/ d4 f- V, B2 h9 |
. C( ^& L3 L' w: 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 | 显示全部楼层
    这个今天有又试了一下,很方便
      m. ]5 g" o9 _
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 04:50 , Processed in 0.069995 second(s), 6 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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