掌上百科 - 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 编辑
% m& u# y# Q) w! B  U
bt4baidu 发表于 2015-9-3 15:36/ H( x) s! h& |- e: |: S
https://www.pdawiki.com/forum/fo ... &extra=page%3D14 H. T+ f; {' {8 V4 R
里面的动态功能都是 ...
0 K' z0 T( H0 D# D# k% U

/ Y! \$ Z# ^! k已经修改了online demo,加入了对内嵌JavaScript的支持。
5 @. D, r8 t/ {9 \3 y3 D# C
  I) f2 ?9 Q, q. [; I关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
, x; l# S: O5 `* P) X不知道你有没有兴趣一起开发?我想做成这样的9 L; Q/ C9 d  M* y9 T) N, V; p" `
http://www.hi-pda.com/forum/viewthread.php?tid=1210672
: x$ k5 X- E, h, p6 r! [6 `, Q' L& p. D

" ^  D! P' F  F0 v% o3 |& e/ T有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
  G# _/ P, N8 G2 j5 w# b
  1. - h% v; M/ c: a. x" o: `1 r) x
  2. (function _my_code(window) {( Z( X# V7 V" h1 j: @4 T
  3.    function u(c, n) {..}  K# F( e, P$ {- ~! D# g
  4.    ..  
    5 Z& P  ?4 k. r; v# D& @
  5.    function w() {..}
    ) l" x( Y4 F4 @3 f9 o* Q
  6.    var F = 0;
    5 R6 Y5 W  e" E9 j) E5 F; o  S

  7. % X4 O# {8 V# Z( s( ]4 i
  8.    function i() {, A# }5 ^1 d1 q& G( ?- U* r% b5 H
  9.      if (!F) {
    " F9 ]1 z  M% P$ S: v5 f
  10.        F = 1;
    7 ^. _+ J9 n  o% W: N1 ?2 x7 p1 r
  11.        w();& f( \7 b# ~7 J$ r9 ]6 o* ?* R
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);
    . u& o( i( A; Y0 B7 Z4 b# V! n6 I& E
  13.      }5 N8 c' _# t" h7 l) k% m& D1 @( ?( \  {
  14.    }
    4 n; a4 ~& }7 {/ b& l
  15.    if (window.addEventListener) window.addEventListener("load", i, false);* K1 S5 x, @' g$ L* U1 B4 Q
  16.    else window.attachEvent("onload", i);3 r0 |. \9 z& X* I8 H( J' P
  17.     2 j: c$ @  a4 s1 {! j. L; i
  18. }) (this);  /* In global scope, "this" is the window object. */& q  g$ w( E6 A/ z
复制代码
& I8 ^* K5 l1 z  N  b: Y; X

4 n; K- V) Y# c- O* l4 k具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。5 N: I+ W4 s; X- _5 w' g' _0 x: i

$ s( V0 a2 ^. K5 C6 v. @5 v另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30- o6 N% B. \1 s& P7 r+ [
已经修改了online demo,加入了对内嵌JavaScript的支持。; S# [& ?3 e! T8 D4 }: U
* A& R/ v" \* n% V3 b  b  j
关于插件,联系过ChaZD插件的作者,看他能 ...
/ X0 ?; W7 @5 _! [( E0 W
& `# ?9 c; }/ [( m1 S0 _
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果* l+ W4 ]  S6 T3 u3 A+ f
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
0 n6 v4 P( Z  D
+ g) k% O) [% B$ G9 E( Amdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题3 W7 G& ]! H8 f3 B# W" M! x
当时倒是没考虑模块化那些,以后有时间再改吧
* o9 b5 ^0 f# S" C: ?2 q% o7 a. B
一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

发表于 2015-9-4 14:34:35 | 显示全部楼层
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
" U; P( A) c! K; u  M& u6 t" n0 @- @
另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
2 l! X: R( l1 ?+ H) T2 ], B( O
% B) A: w( k0 `1 m
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询" K. j: M5 x2 P# _
resize是为了对齐单词用的
$ L3 ^; i4 a/ R$ F3 kquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
$ D) X. r4 \( T' ]4 d

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
# o1 ^7 f" M" m% j% T0 Q差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

* c" t% T; o# m9 c1 h* D' y画个图! x% H- N. m9 ?; l$ l6 ]
6 C4 R8 {! o( b* Q

该用户从未签到

发表于 2015-9-9 11:01:33 | 显示全部楼层
非常感谢提供下载
  • TA的每日心情
    开心
    2026-1-23 23:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 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的每日心情
    开心
    2025-8-21 03:22
  • 签到天数: 12 天

    [LV.3]偶尔看看II

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

    该用户从未签到

    发表于 2020-7-17 22:37:05 | 显示全部楼层
    这个今天有又试了一下,很方便
    ; F: y. Z: S; y
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-6-21 14:03 , Processed in 0.018386 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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