掌上百科 - 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 编辑
( `% P! f' j$ p$ w4 h( B9 u
bt4baidu 发表于 2015-9-3 15:36% l: W4 L- L2 @7 J* x* P
https://www.pdawiki.com/forum/fo ... &extra=page%3D1! v2 j8 z1 {/ \8 z' |1 \
里面的动态功能都是 ...

& d& T  ]; |- a9 V" O9 b0 }. Z* J2 A3 _( M
已经修改了online demo,加入了对内嵌JavaScript的支持。& r  y6 W& u$ z- n1 j  n
* `- }- X1 u$ Q8 p, ^; I; u( }' r
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
" K# S. v( ^9 Z1 Q不知道你有没有兴趣一起开发?我想做成这样的
& B% Z* U; [$ I7 L  p* I. L9 c4 Yhttp://www.hi-pda.com/forum/viewthread.php?tid=12106723 D% u4 e; R5 p" p
% F( m  E) k; V  k
1 e' q+ `2 G/ |6 f$ X
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:) e" z2 U& g& S1 ~

  1. , U& E& w2 _3 ^# y5 F+ X) R
  2. (function _my_code(window) {
    / l7 U. m& I/ O. T' W" u' e* A
  3.    function u(c, n) {..}5 F* ~) Z. T" h1 S
  4.    ..  2 _5 T8 i0 C7 T' |; Y! B* L
  5.    function w() {..}5 D+ {$ K  t. ~5 a( v
  6.    var F = 0;* g4 z8 z% W3 ]& t8 [& i* d& G
  7. 2 ?7 K, e; i2 M  A
  8.    function i() {! o* i- f5 d% ~
  9.      if (!F) {
    ) M6 _' I# \! h$ i( U
  10.        F = 1;
    9 p. I6 G6 R+ z1 L
  11.        w();: b6 K. Z% B( F
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    7 }. S0 e9 c8 u
  13.      }
    ( l( T% Q! Z5 g$ {2 f: N
  14.    }
    # J" E# y- z7 O
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    & p9 f1 W& z  U! h6 y! P
  16.    else window.attachEvent("onload", i);
    # P2 t/ h5 @9 Z( s& o
  17.    
    ; v& o# \6 Y8 I+ D
  18. }) (this);  /* In global scope, "this" is the window object. */7 o0 J+ \: J4 @% }, J: M8 [/ J
复制代码

7 d2 U( G4 B2 h; l2 }! p8 ^) v5 W% c0 c6 y
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
: d; O/ _( E7 z
3 {" ~. y8 E# p+ q: v另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
3 a5 d7 m; ?" m  G! v) O' n  K已经修改了online demo,加入了对内嵌JavaScript的支持。
7 Z8 X, d: e* K$ m( f2 f7 Y, I; N; {5 [2 q# p
关于插件,联系过ChaZD插件的作者,看他能 ...

3 c+ A' V# J2 m5 I$ p7 ?
3 c; l$ G% x3 B# i差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果; }& Z3 Y% S4 a
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
- L  q8 U& }$ F2 L2 `* o0 @7 |$ ?' y- {0 h, s( F1 h5 w: K
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
8 u3 K8 k8 K1 K9 ^+ p7 C当时倒是没考虑模块化那些,以后有时间再改吧( \4 i" [& s- A1 Y+ e! t% g$ y% ~
4 c2 j1 z  _% o+ a/ M1 }. N
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

. G9 P$ J" D# a( P# k另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

5 R2 {/ ~, [5 f1 v
+ t% a6 U$ l: I4 d# X7 ll.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
( K9 U8 L- V, [; g- u, \+ \resize是为了对齐单词用的" O+ C3 b; \& C. }! U' C
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
" d' M% N; d) [& t, ^3 q1 P

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:078 y8 @# X8 T1 X" a3 D/ P
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

- ]2 t- {( Z  r! r* D5 t画个图) b$ \* o- ^: u3 D6 c# z" }
* i$ t+ G* e7 G

该用户从未签到

发表于 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的每日心情
    擦汗
    2019-11-24 11:58
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    该用户从未签到

    发表于 2020-7-17 22:37:05 | 显示全部楼层
    这个今天有又试了一下,很方便
    8 U5 K5 v1 z. i! f3 ~  K
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    顶部qrcode底部
    关注公众号送论坛充值码
    关注微信公众平台
    关注微信公众号 pdawiki,获取邀请码,看文抢积分,抽奖得浮云! Follow our Wechat official account "pdawiki", get invitation codes, and play the lottery to earn points (积分)!

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

    GMT+8, 2020-8-15 15:23 , Processed in 0.032340 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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