掌上百科 - 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 编辑
  E, T2 n0 P% u/ T! `
bt4baidu 发表于 2015-9-3 15:36
- |* R: I8 j! x& R. P" c! z7 O# ghttps://www.pdawiki.com/forum/fo ... &extra=page%3D1" }' {, k/ l8 @3 K% I1 S6 h/ q* e
里面的动态功能都是 ...

' s( N" n5 }: a$ b" c7 j& Z
0 ~/ `, x* r0 B, u" `/ z$ p已经修改了online demo,加入了对内嵌JavaScript的支持。
) C3 }" p. M7 o: s
$ o, z' p" r, l% o/ s! Z1 b关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
, Y5 X  t. N* q2 g不知道你有没有兴趣一起开发?我想做成这样的
! _# k' F6 T4 nhttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
3 R3 F- _2 l% r- [5 W- I9 e6 a) r, l: |9 v9 u# `- [

) U' C/ s" v* @% o' y有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
4 O; j9 p& B4 d1 v  A$ J

  1. & O1 C' C6 N6 y$ j* ~) l9 a
  2. (function _my_code(window) {1 V8 O+ e) L9 k5 V  J
  3.    function u(c, n) {..}+ \7 P1 f  T9 N, A: w2 H9 ^6 @
  4.    ..  
    7 h, ]' \; s9 Z/ O/ E% W  A
  5.    function w() {..}  q6 M$ S& [6 M% i
  6.    var F = 0;+ F  c& N  e! b" b2 b0 l& h

  7. * u4 t' ?9 I8 H, Q
  8.    function i() {
    0 v2 H; G8 Q3 |% H  U9 b- U
  9.      if (!F) {
    + }7 Z' T& m/ Y5 M" m" M. O9 c! j0 h
  10.        F = 1;
    + i6 k% |& O' _4 h, T9 F) y" t. f
  11.        w();" r. Z1 o& o7 o
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);, u) K$ S3 o. E$ `' x$ D  X# O7 ~
  13.      }
    % Q1 G, D0 U: r9 {$ \- Y1 G: M+ f
  14.    }- a) |, I3 q& h. j* ]
  15.    if (window.addEventListener) window.addEventListener("load", i, false);2 f7 h* b  l0 m6 P
  16.    else window.attachEvent("onload", i);
    ! F" N( f7 E/ G2 S$ s/ N
  17.     9 h! U. r) H1 C) @4 D* ?' H; \7 R
  18. }) (this);  /* In global scope, "this" is the window object. */
    . N# f$ T5 j! n$ V9 q4 {
复制代码

# }( ?7 u( M. ]" e3 K: C6 a
) J4 T# b: F" h9 W1 O( K具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
9 K; \  y8 X) U7 T0 Z* F9 u' T% E( M$ z7 u/ `# d2 J& j  E8 w
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:306 Z) @7 P  S4 \) C5 p- r
已经修改了online demo,加入了对内嵌JavaScript的支持。
1 f% s" ]9 K7 J! |/ L8 U& O' N7 o1 z4 a4 k0 _- }" e( K
关于插件,联系过ChaZD插件的作者,看他能 ...
7 R! l" i& |" E6 \5 o' ?' Q

8 X! i" s' }4 V% Z3 b0 L差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果% r9 d; S% T" d! h8 O/ l9 v
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
4 j" k0 B- S. j- G  k& V3 u( R$ U
: l3 a. X/ A. I- Zmdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
+ V# ]0 X. g) D当时倒是没考虑模块化那些,以后有时间再改吧
- O: d/ R0 ~5 g' D: {3 c
7 _8 X8 N% E' s+ |! H# O; k一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

( s$ q. ]: N% U; U另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
& F; X6 j1 ?( S2 Q( s

  }0 S: ~! |" Z+ Q% ?' Hl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询9 G5 ]9 q0 t- ~) H- A8 |# }$ O$ v
resize是为了对齐单词用的( i0 k! v+ R- z7 n
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法2 N% g' A! E3 w* b( X

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
  o6 N6 _) Q4 a2 q! p差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
; d& r. l( \9 k5 q- z. P0 J7 \( ]
画个图+ |* i- _: \7 }* \1 q" y! \; H

2 h' D  ~$ t8 l% `

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便" M, ~3 @- v0 y6 T# k3 I
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-24 14:54 , Processed in 0.037841 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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