掌上百科 - 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 编辑 ! B2 ~9 i/ l' D2 k/ G# D& m* [$ {1 m) p
bt4baidu 发表于 2015-9-3 15:36
; G3 p4 G2 m' e9 m. l! d" jhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
+ D8 C: ?  G. [5 ]! w( O6 G里面的动态功能都是 ...
  B% P2 Z) l. v' b8 t5 u- h
4 B3 y# Q6 u, X0 ]! h% j0 g$ |
已经修改了online demo,加入了对内嵌JavaScript的支持。
# i& K3 l: c1 Y# t3 a0 W
0 M# v3 J3 U# A& S关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。) J9 D8 B! [8 [0 m0 G2 O* G
不知道你有没有兴趣一起开发?我想做成这样的
2 n: ], ]- [% K+ jhttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
2 l  K/ G7 d" u  n! h& d& i8 l
3 i7 v1 u! m% T3 e  Z+ ?( I% p) }! G5 U" j! U
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
7 Y& L; I- N  L$ z" u  B& p8 d1 h2 p

  1. ) q* q& ]. z* }  U! x& B1 ~. ~
  2. (function _my_code(window) {7 |: k& s& T0 e2 t+ E
  3.    function u(c, n) {..}
    : b" l4 m5 x. V/ |) F$ h- h1 c
  4.    ..  
    ! c$ r  d  y# i$ v7 z! A
  5.    function w() {..}
    9 ^. E, K$ Q. M3 g5 M: T: d
  6.    var F = 0;
    8 I! `' u1 r# K" D! t0 }

  7. # D( D: m! V' ]  A4 {+ a
  8.    function i() {
    / a6 T  {, {. R
  9.      if (!F) {& M, D% F$ N5 p) g  P+ N) V8 E
  10.        F = 1;) m. {7 Q' v# K! M
  11.        w();
    3 ~! J4 v, W, c
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    $ T1 |7 K7 t5 Z$ ?! x9 T
  13.      }
    9 \' o# k* }, O9 ]
  14.    }
    : Z0 o1 f( U9 R+ r/ T& F. Y
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    + ?/ N% }  f) J. A% N. w! A
  16.    else window.attachEvent("onload", i);
    + g0 z+ k6 M' ~" U
  17.     2 j) Z/ p$ S1 L2 C- [9 w/ `
  18. }) (this);  /* In global scope, "this" is the window object. */& W* M6 g4 k7 \3 O! X2 F* T$ \+ }
复制代码
5 w5 C$ `4 B& X. d5 y
' n% C9 C0 z! U5 j# g* r1 a
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。# d( T+ N5 E) U6 L# U
: ~& z; P; i* G* k( X& a
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
- [' i% f+ v8 R6 E+ b已经修改了online demo,加入了对内嵌JavaScript的支持。
4 o! [; _& Q9 H$ Q
* D( h0 o9 f" \' u7 Q+ J, p关于插件,联系过ChaZD插件的作者,看他能 ...
6 `- i$ t- s5 d4 e) K
- ]. e* m( ^* T' ?
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
* v. C8 K7 H. H- e要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
9 ^! h( E) U; A; v
3 f8 r! v7 |. A( i1 ~% D+ ~mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
/ V: x6 f0 O  Q8 k2 K当时倒是没考虑模块化那些,以后有时间再改吧
% I4 n. G# `5 |; D$ p% [& d4 }  \, k% V2 A1 b3 A+ ?$ X
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

. x# H% E3 N5 u8 D% ol.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
: W& P( w# C0 |! A. D/ W+ iresize是为了对齐单词用的
1 Z8 z: k- h* c: gquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法& K" v( t. S( I, Z' o/ c8 C

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07  o: U' ?3 [/ j3 Y
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
  T: Z6 ~& h, o* x" v  _6 D
画个图. J; `  j) n- `% q
2 ?# K0 Y6 j+ Y3 n* L* {

该用户从未签到

发表于 2015-9-9 11:01:33 | 显示全部楼层
非常感谢提供下载
  • TA的每日心情
    开心
    2026-1-23 23:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 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的每日心情
    开心
    2025-8-21 03:22
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2020-7-16 16:04:11 | 显示全部楼层
    大神可以弄一个java的解析库吗

    该用户从未签到

    发表于 2020-7-17 22:37:05 | 显示全部楼层
    这个今天有又试了一下,很方便8 ~6 t9 u( X& p9 W' Q
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-8-7 14:17 , Processed in 0.019235 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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