掌上百科 - 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 编辑 + }& b. K5 R+ p  ~; ~
bt4baidu 发表于 2015-9-3 15:36
3 O; @8 t3 H/ z4 C5 S- a% hhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
8 Z3 d0 ?0 I2 o7 }; ^  G# o里面的动态功能都是 ...
2 [- c+ M) A7 V* M  H9 M- J9 P/ x8 L

5 R( m, L; e( Q% @已经修改了online demo,加入了对内嵌JavaScript的支持。6 u# N# Z, T, q. `& f8 N
+ Q1 Q$ }- N# n: O4 T0 \& x
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。$ A( C; i/ d2 n$ u0 K5 e0 W
不知道你有没有兴趣一起开发?我想做成这样的
( w! C( O" k1 _& C' C6 Q0 ]http://www.hi-pda.com/forum/viewthread.php?tid=1210672# K* w9 Q4 N1 C/ K; p1 f
" k6 V) V. |# ~: K/ {4 {
( ~* X, E, @* [* B7 u9 _
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
" C' |% J+ b0 I  o/ S
  1. ) T) ]* r4 I  [2 b
  2. (function _my_code(window) {! ]9 M/ s2 J$ |) A2 X( y2 a
  3.    function u(c, n) {..}# }" [# r. M( Q% v& P
  4.    ..  
    . f( G' ?+ s; d. l3 Q$ H) a
  5.    function w() {..}" b4 L$ d$ m2 m; l
  6.    var F = 0;
    2 t, ^6 C$ |1 u6 r) R. d
  7. ( a; ]# R2 ]2 `  s
  8.    function i() {1 S& u) |( u/ V4 X0 ?) c  |
  9.      if (!F) {+ u* p8 [& r. C; s; p
  10.        F = 1;2 z6 D# z. P$ @9 }* m6 }4 k5 b
  11.        w();# D: l6 [% ~7 M& t% j5 \3 m
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    * y+ _. i# N) M8 v/ N* d& S: L- y
  13.      }
    ! G1 n; O2 q& l
  14.    }
    / T3 L( i6 O0 @5 C
  15.    if (window.addEventListener) window.addEventListener("load", i, false);  r& K8 l3 i# v2 J! i
  16.    else window.attachEvent("onload", i);6 h% ]9 J' d! H) B5 M
  17.     ) c  P" G2 L- x& E
  18. }) (this);  /* In global scope, "this" is the window object. */" J9 u) X. \) U) v2 _
复制代码
5 @" P+ w( R* |/ _" q2 u, w
8 n7 ]! `3 b+ X1 w/ p
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
) P( a2 x/ X+ L1 j: Q! V' L
) V- b4 c) ^9 ?  N, B: D7 F4 _另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
9 N/ u4 m* V, B. h* n9 q已经修改了online demo,加入了对内嵌JavaScript的支持。
. h- @! }3 m# D4 c! j% \. N7 E. J2 n& u  i
关于插件,联系过ChaZD插件的作者,看他能 ...

( o5 t' b) F% m# r+ P  s2 u. c2 [9 d0 B8 n, n( _2 J, `
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
  \/ T7 w- d5 O- l% r& U* E0 M要是可以左边双击网页上的单词,右边直接出查询结果就更帅了: C" a; I. b5 J1 B. l+ u6 R* H

5 Y; s0 i+ ^9 a! U6 y+ `mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
! G& p5 S2 O, l  ^当时倒是没考虑模块化那些,以后有时间再改吧
5 R5 @$ u0 D5 s8 q- x6 j% U8 `; l! w3 C# w* I/ Z. x
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。* Z5 p5 W' k6 x, A
, h* _2 C# _2 X$ B$ j
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
# }" o$ H8 [! k; E  q
' Y, d8 `* ?& H
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询" }3 c7 ?; q) `' n8 P
resize是为了对齐单词用的
" v3 u" _$ G" uquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
1 p9 F" q' j' T

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07( v. C& G& |. [$ N( g
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

# Y1 }& Y* A; a: Q1 F画个图  q  Y- a: }) K, h( J

8 I( C0 N, [7 t( s1 d0 v+ M

该用户从未签到

发表于 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( {: E1 l/ L* D" O
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-15 14:50 , Processed in 0.051033 second(s), 6 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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