掌上百科 - 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( z2 x8 q. A1 _; R
bt4baidu 发表于 2015-9-3 15:36
, a0 D% x8 H6 Z/ t" t3 P" m, Whttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
2 U2 `# n8 S% @里面的动态功能都是 ...
# g3 `8 v" |/ R! ^6 p3 ?

6 ^. G; i1 u( A3 `1 }: ~* m- \" _3 f已经修改了online demo,加入了对内嵌JavaScript的支持。2 ^7 t; v: ]5 F, B% L6 P0 W, K
  H6 z# O& H7 a+ [* e% C
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。9 R9 R# y& t" }2 e# l( [0 D
不知道你有没有兴趣一起开发?我想做成这样的
0 m/ K3 L3 {1 l9 Ohttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
5 r9 }$ D% ~4 ?
, M3 X- O+ I( O+ p; ~
+ `0 j( u. Y! V- k有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:+ O- T$ Y) c# X; A* b' w
  1. & I- w6 d" D! k, i8 o" X- j! \
  2. (function _my_code(window) {# _; L% B3 s( O, m/ M4 o
  3.    function u(c, n) {..}
    # @$ T6 a& Z( o2 [
  4.    ..  
    , d. @. E# s/ u5 A
  5.    function w() {..}; m8 r: h2 N9 E' [; g- U4 Q) w
  6.    var F = 0;
    / w0 _' K. I0 }

  7.   Q* ^% t0 b; V4 R
  8.    function i() {5 F/ A7 F+ b' _
  9.      if (!F) {
      ]; H* f2 A$ C+ W9 d- ?* s. R
  10.        F = 1;
    $ ^" q/ |: H- a+ E& i
  11.        w();3 p# x, @# I* D9 B6 e4 p6 @
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    7 k2 ^1 y; ^# S8 K; I' x8 r7 ~
  13.      }
    & n- O1 s& o- R3 O# D2 E
  14.    }
    - L; ^) w4 `9 T: B: K; m& j
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    3 k& {" U* ~1 a
  16.    else window.attachEvent("onload", i);
    6 e: B# l) i3 x# `) q
  17.     ( Y% C+ ?- l) A
  18. }) (this);  /* In global scope, "this" is the window object. */) w/ F& f( Z% P/ K7 y/ }9 b
复制代码

7 I5 @- H; g  d; p# V2 l  [, e, h) O2 W8 U9 ?6 R' ]& B; Y, V
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
; `# i$ w- F. O8 F, y% {2 l0 g+ Z" _  Z; I% ?( ^+ |! _
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
( `, o% ?* H% s: J& N已经修改了online demo,加入了对内嵌JavaScript的支持。( }" Z' {: {' P( l

$ m/ z" |7 D' Z关于插件,联系过ChaZD插件的作者,看他能 ...

' U. H' \4 B0 ?: y8 b/ r2 W- A/ A, w. f4 a- ^
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果  m! f8 [( L$ @# L: h2 F% b5 [+ F
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
0 j% C) ]$ K- x0 |/ H
/ g- H$ E  F: u+ Z/ ~mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题. G$ E; c' V! f. u8 k# r; Y
当时倒是没考虑模块化那些,以后有时间再改吧
7 }( }& l5 X3 j! A0 B. T# v9 ?- I5 _; s+ f' l! ?" b
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

7 ^1 w4 x: t$ Z0 v另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
5 ]4 P8 Y1 ]9 g9 ~* |+ C- v
$ e' q+ K" F0 v. ^5 b& i
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
' t8 o/ s, }6 h" oresize是为了对齐单词用的
' g) R7 D1 U0 \2 ?, b3 ]querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法9 _0 A! Q) \$ g

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
: p# Z6 }7 Y; n& a差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

% Y+ J0 K+ C! }) @+ T画个图
( @- Z" `1 d, P2 F
6 c' l* v, N6 D/ c

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便
    ; X' i8 ?" x' ^- _$ h
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-1 14:25 , Processed in 0.020941 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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