掌上百科 - 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 编辑
4 M1 V! R" i5 _6 ~
bt4baidu 发表于 2015-9-3 15:36( C( ?) K0 L7 N
https://www.pdawiki.com/forum/fo ... &extra=page%3D1
  b4 T- a8 Z2 Y; m, D- k! k里面的动态功能都是 ...
3 V. a" g8 p3 B

/ a7 ^3 \) ]+ E1 ~已经修改了online demo,加入了对内嵌JavaScript的支持。
* G9 ?- C$ H' p9 h2 S/ ^
* i) T6 P. |# c8 y" N8 ]) f' j关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
3 b- |: @  c8 d$ E8 u3 E6 B3 ]不知道你有没有兴趣一起开发?我想做成这样的
3 C9 H; o' ~8 @' O0 b- qhttp://www.hi-pda.com/forum/viewthread.php?tid=12106720 L# ~1 ?* U5 Q: n
  [) s# h7 t8 Q2 p8 _" _
+ F  T- l. y0 ~% }1 i9 ~6 N, X
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:+ `+ h( i5 [9 d/ X/ u* Z9 P
  1. 2 _) n0 f. T/ ]  @
  2. (function _my_code(window) {
    ; |% G. J  z& a6 W, e4 t& N5 V0 s
  3.    function u(c, n) {..}
    ; o4 H' F+ T' X, @6 g; S
  4.    ..  1 D. b2 L% c9 }$ o$ H5 D: U
  5.    function w() {..}
    : ~; z, X: L' S
  6.    var F = 0;
    ( Z' \6 H( y. f  k

  7. , J1 y, f* V1 X; g* e) s: R: o
  8.    function i() {
    # l; a/ @# |) x' Q3 A9 `* s9 ^
  9.      if (!F) {
    2 J2 |) \! x; ^9 v/ A% Z* f
  10.        F = 1;! q# ]: L1 B$ ^/ W
  11.        w();9 \, A: T6 K" Q; j, L- a8 k% Y. p: D
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);. u" s5 x, Y, l0 h2 i+ F) S4 C
  13.      }
    " i9 ]& `2 u- P' w0 T* J
  14.    }
    , P/ @* z6 m  l; P
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    % Y8 p! U6 ?1 r1 Y: d3 G+ S! R
  16.    else window.attachEvent("onload", i);- P  O4 n9 u% T5 L4 X% g
  17.       {9 B) y8 Y! j/ N2 H" [) p% `
  18. }) (this);  /* In global scope, "this" is the window object. */. }1 d$ E% D2 x- k% d4 S+ ^2 `, H
复制代码
5 E1 Z3 X9 k: ]1 c% C' c
$ e7 F& y! r1 f# _) E2 W$ R
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。: w% {0 T5 {7 i

7 \! ^+ ^3 w2 z1 t1 m另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
  y  d; ?) k4 Q; A/ _5 N已经修改了online demo,加入了对内嵌JavaScript的支持。
" l1 `6 o3 X, n1 l1 Y, u# t* F, B- C6 Q" F! M& W
关于插件,联系过ChaZD插件的作者,看他能 ...
: _% Z  P$ H2 D/ ]4 T/ F$ D" E  A
* v2 V+ {! e7 u4 z; V, ?
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
% u2 r- x& G' W- M. h1 i9 q要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
( b0 T! I' B/ M- l3 C
! @5 p" z/ V5 g, O9 A- \" R& q' Mmdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题  }. |/ z7 e2 E2 ^5 {" @
当时倒是没考虑模块化那些,以后有时间再改吧
/ r2 U5 @* `- W3 B' @0 O& q, O" f% V. [4 e+ S9 [! B8 M( i
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

" s" z6 z" U& d/ p5 q0 R5 F% sl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询! D8 l& n$ v2 V: H8 x! {
resize是为了对齐单词用的  w* h7 J8 {3 ]
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法  l& `& C' a  z0 \% k3 O  E; q; n. Q

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
- {1 a" Q) g" f5 K6 I$ j差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

" N. n2 q, {9 W5 q' I' O3 k. V画个图+ f2 }; b  e: s& A9 M1 U+ ?

# Z+ r9 ]2 {  Z; F# [7 u0 @: w7 {5 e

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便: O2 T# i6 j8 n6 i" S/ g
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-15 11:45 , Processed in 0.050724 second(s), 6 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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