掌上百科 - 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 编辑 1 z) y" l" N9 c( b# E* g& X, W
bt4baidu 发表于 2015-9-3 15:36. ]' j$ n1 T( L1 k5 [# z  n* u
https://www.pdawiki.com/forum/fo ... &extra=page%3D11 P; k6 T( b( @5 p7 c% j( T# J: k
里面的动态功能都是 ...
+ ]6 \  K3 r4 b& O) l& G! M  ~: m

5 l2 H4 D& ^1 t2 @! A  G# R已经修改了online demo,加入了对内嵌JavaScript的支持。
5 O- t( b2 _. I4 {; A
+ Q( r7 S# Y. L关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
6 b4 G, l  t: `8 Y4 C不知道你有没有兴趣一起开发?我想做成这样的
& s2 g0 U$ E4 shttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
; e) m% {2 a6 Q. a; w8 y$ j& l; F* A

  c' w- @+ e7 e  U6 u- @有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
3 \! p" @: i% n' G3 b2 r% D

  1.   v" |1 x) m6 s. w0 C3 z4 T
  2. (function _my_code(window) {" U5 f) v' N7 E' j6 F2 `3 B
  3.    function u(c, n) {..}6 w' Y5 U. ^, n$ Y4 `
  4.    ..  ; |: O1 N7 M& f0 ]6 D
  5.    function w() {..}6 _8 p# ]& H  [9 J( J  p' U0 B
  6.    var F = 0;
    ! |5 [* d( x8 c9 {
  7. - c: x8 W( Z9 x- a# n
  8.    function i() {
    0 E, e$ R& H8 Q2 \* t
  9.      if (!F) {" X/ c* j( Z% u+ j# M
  10.        F = 1;# Z5 S; F! U+ N1 s
  11.        w();* U  K1 A: Q. d5 \( q, b
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);. b9 Y$ u7 l/ b3 M8 `; U  ~2 w
  13.      }
      _1 T* W; q, L3 ^! P6 ]
  14.    }8 [6 j0 K! k: H, E% T! b" A8 B
  15.    if (window.addEventListener) window.addEventListener("load", i, false);. a; a( P! k8 h$ ^3 `9 g
  16.    else window.attachEvent("onload", i);0 K$ r: u. D" E# x
  17.    
    $ ~$ \2 f7 f! M- f* I& q
  18. }) (this);  /* In global scope, "this" is the window object. */- t8 c( i+ g$ l' H  C
复制代码
0 K7 w; A! c8 G& X1 q
% K4 H! b. l# \! H
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
" B# e: W1 z- W( T! d; `& f2 ]! Z* S9 s: Q' s7 F
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
* B& m% B: h2 h( D/ S" X/ b已经修改了online demo,加入了对内嵌JavaScript的支持。
. e! G& F! t3 V) g- h. t5 C
# P2 W; Z" j3 }% n* f9 ]3 K关于插件,联系过ChaZD插件的作者,看他能 ...

6 A6 D/ C# G- Z- ~* w0 n
3 X+ T, \' @/ _差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
3 G  f( h! M. w: C8 f要是可以左边双击网页上的单词,右边直接出查询结果就更帅了. }# c3 W1 L5 e- Z& @4 u
3 @+ x( w" K( P; F3 f# o
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题- ^6 o# T$ Q/ t% {; f+ j! {& A
当时倒是没考虑模块化那些,以后有时间再改吧
  X& k: ?/ A" N
1 P( [  ?; i+ {! E. C: v一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
5 L: b6 ]: p# A0 W/ M2 K4 l
. z5 w( a& \% J  d( r. |另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
& o2 R. ~* d8 A8 O) @; }

- C& }/ t% z; ~( H8 `l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询5 N( M' C( Q* z8 {- w* Z+ D: ?
resize是为了对齐单词用的: s. q5 q& |0 a) p0 u
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
9 E7 ^$ i. N* d# G# H! t( _

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
6 D4 H6 A7 X6 P( r差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

8 E% G' \8 p  M" B0 g$ i, d0 @画个图& O; I9 l. E3 A

9 ^$ G7 o5 m9 M1 V1 ~7 Z5 E$ d

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便3 Y4 Z/ U1 i8 h2 A6 {% t5 Y( L
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-11 12:26 , Processed in 0.021874 second(s), 17 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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