掌上百科 - 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 编辑
3 O7 K7 o3 E6 E6 h4 i& G
bt4baidu 发表于 2015-9-3 15:36) u7 m$ q, {; D# Y9 U
https://www.pdawiki.com/forum/fo ... &extra=page%3D1
/ U) P" J+ Z0 l里面的动态功能都是 ...

/ r1 o: v8 E8 i- S- E  j  [2 e& |  E3 f$ B/ L. z7 ^
已经修改了online demo,加入了对内嵌JavaScript的支持。! z. j' Z  }4 Z& V; b- @
' Q- T; J& b; N
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
) K0 a+ {! S* Y8 t# w( k$ e) U不知道你有没有兴趣一起开发?我想做成这样的& K4 H+ _9 ]0 t8 @' \3 i  s
http://www.hi-pda.com/forum/viewthread.php?tid=1210672, x9 K4 K+ A1 a1 R/ [

" o( B; f9 v; Q  ^. {! B! U! I0 N/ W7 b( Y% N+ d7 B
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
% D; X( g% f) |  M  C

  1. - G( s4 a/ p1 v5 {2 v% W8 h" |% D7 e
  2. (function _my_code(window) {
    / x" A! q. }: b! `* D/ u& L  `
  3.    function u(c, n) {..}4 o  R* L8 v/ v# `/ E. g
  4.    ..  
    % p- D, S$ t2 S' S7 H
  5.    function w() {..}
    7 t& u1 ]' x: c
  6.    var F = 0;
    : J' b+ e, Z2 v3 W1 h3 `4 I
  7. ) Z' X2 B+ j6 ^4 o
  8.    function i() {* F1 d+ B* Z- Z5 @+ J! }9 c
  9.      if (!F) {
    ( ?5 W8 C" C; _1 ]1 v
  10.        F = 1;/ ^* x4 U7 l) P  O
  11.        w();
    . O1 L  x6 z; b$ ^8 ~
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    ) p3 ~& U/ \) N/ b4 b  {
  13.      }
    ; Z% H; Y! M% S' K. ?
  14.    }9 X9 x  w7 ^- d; D6 {, {
  15.    if (window.addEventListener) window.addEventListener("load", i, false);# n* A, g- H8 J# R% C5 c2 G$ t
  16.    else window.attachEvent("onload", i);+ t0 o; A- D- J3 j9 Q  z
  17.    
    % O6 d+ }6 c/ S4 G
  18. }) (this);  /* In global scope, "this" is the window object. */7 h% u: Z; g+ i
复制代码

! D! Z: I! _& c. E* E4 c, }: s5 U& ]
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。2 r1 t2 E! J( y9 v- V
1 h/ b& t  z- R1 ]! `
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
" b# l8 J7 ^0 W2 ?1 F已经修改了online demo,加入了对内嵌JavaScript的支持。3 k* x! p/ Z; ]" J

0 d: ^3 x7 m% l/ H关于插件,联系过ChaZD插件的作者,看他能 ...
# B! @/ X( N" p  d% }
: Z! Y  H3 x! l7 |/ l$ \6 u
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
& Y) ^5 x# W& J9 \; o9 r1 @要是可以左边双击网页上的单词,右边直接出查询结果就更帅了7 @# p9 `4 Q# E* Y! r  _' t  [

2 G! n$ k/ W5 h% t& o, Kmdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题9 i* ^$ F1 I. @9 @) ?2 y
当时倒是没考虑模块化那些,以后有时间再改吧4 D' _7 V& H4 c7 n

1 X2 S) ]: L. D/ ^7 G7 K% `一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

- H8 ]. V2 V+ G" n' l0 z4 s, ^
) b$ q6 ]+ k* `! W' n: [* ol.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询# Q! Z0 [& E+ Y$ \
resize是为了对齐单词用的
7 d9 w( P7 x8 g2 f" w( b' equerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
+ A6 s1 t) S* H3 g2 H1 ]

该用户从未签到

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

6 `; X  g) p6 T& j! x( J画个图" B/ s; a$ f, e% R+ _

; \" `  j% E1 E. ^8 I

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便% c* g' J) g8 u7 M( B8 y
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-4 11:51 , Processed in 0.021406 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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