掌上百科 - 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 编辑 ) q4 t4 |( i- `% j9 O& ^  e4 Y7 a( N
bt4baidu 发表于 2015-9-3 15:36
. P( `; T6 }: e. T1 T' Shttps://www.pdawiki.com/forum/fo ... &extra=page%3D14 D9 d- ]! b! y0 S: `: `
里面的动态功能都是 ...
& ^5 H# W. t. J8 [" C& g) D
) ?* d0 E4 Q) t  J! j/ ?  p) Q
已经修改了online demo,加入了对内嵌JavaScript的支持。8 g/ n8 {- x, Y% c3 n
7 \0 O- z5 V+ O9 D( X9 o
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。! k1 _* m  F4 }. k5 j% G; i+ G
不知道你有没有兴趣一起开发?我想做成这样的
, q7 ^" e9 I) b. ehttp://www.hi-pda.com/forum/viewthread.php?tid=1210672& q. f1 ~4 o' K) R2 \2 `

5 E3 H2 C) G- Y3 K6 \, W) h) Q  k, ^5 E
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
$ D1 O  c9 O7 s" B9 Y- T6 M5 _

  1. . G+ N, a* j; e, N: }4 M
  2. (function _my_code(window) {( U( X5 i8 z% W4 Y' G6 ]
  3.    function u(c, n) {..}
    9 m# {0 C: O) F7 n
  4.    ..  
    + V' |/ V0 j4 \' E
  5.    function w() {..}7 o$ S& J$ q5 V% b6 Q, J
  6.    var F = 0;
    1 R) n4 q- M9 n1 s  M9 e: A
  7. ' T3 k$ P8 b8 n5 u. O% [
  8.    function i() {
    / I) Y: G. M+ R% J; u# v  H
  9.      if (!F) {* t+ z" J: Y: W5 w& q6 C
  10.        F = 1;! Z& c# ^& B1 c; Y
  11.        w();4 V$ o3 y& L6 K9 O9 L# q8 _& T
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    & F" H( ]5 v$ |, w# l: {
  13.      }
    7 V  ?( X" n: W: n5 ~- m
  14.    }
    & M& h" `: i& F% ]: l- M
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    . J7 k" O" n4 S
  16.    else window.attachEvent("onload", i);& b& }, d4 t- D
  17.    
    2 {$ Q' Z. j6 p/ S
  18. }) (this);  /* In global scope, "this" is the window object. */. p2 i% N- u" h
复制代码

0 Z2 C, L6 F8 \& i/ ?
0 V4 p& A( N$ h- D' g: o( C具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
4 ~$ u" J, X  M# Q/ t4 h, {4 w8 `1 t5 y' \, n8 X% @, ?0 I
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
2 M6 v, f6 X+ {. \$ _# M已经修改了online demo,加入了对内嵌JavaScript的支持。
% {5 P: v* r0 `, M, U2 n- y
9 v* m4 P# G: k$ }( \关于插件,联系过ChaZD插件的作者,看他能 ...

$ j# ~5 r3 t0 Y, ^
4 H- h' O$ B* @5 M: T; g差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
+ w+ T: J: j. J# |* J# o; }要是可以左边双击网页上的单词,右边直接出查询结果就更帅了1 W; H  B# F3 h4 u; }8 x! y+ k6 Y

# ]! A. v" n5 a5 K' ~" Amdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题0 E, c( c% f: _) ?2 t, D2 o
当时倒是没考虑模块化那些,以后有时间再改吧
( L7 a. c7 R3 b0 X$ g; g/ ^, K( d2 u8 i% }* v& k5 g
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。6 A2 R! l0 Q7 Y* R# E) f2 `( R
5 T4 T- C4 y$ V- Y  B- K
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
  s# Z9 a- }1 U# `

  e$ J) n: f1 o* a# F/ wl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
5 C# {2 ?5 v% _1 ]9 m3 i2 oresize是为了对齐单词用的
7 s2 h3 c9 I' [# N2 Z, ], [querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
; u5 g  C- ]+ n* K( g

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
% |$ \1 ^5 S* ~, X, u0 u差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

1 o+ \1 D! Z5 n* Q1 c/ u% V# z画个图3 }  ^7 U& q, K  N3 R- h

+ O$ V! Y* n% B/ h0 g& N3 a

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便. g: b# T$ S# u' l, Z' Y' D$ H" l2 q
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    顶部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:44 , Processed in 0.032867 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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