掌上百科 - 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 编辑 0 T! Z! P4 O5 y, m3 p8 n4 L
bt4baidu 发表于 2015-9-3 15:36
: V& R: n3 f* d/ O* v8 T( w# zhttps://www.pdawiki.com/forum/fo ... &extra=page%3D1
6 U. T* P% ]/ E6 G里面的动态功能都是 ...

* Y# X& y- X# Z" i; Y! l6 F" M3 E/ a' a/ {, \
已经修改了online demo,加入了对内嵌JavaScript的支持。
, S0 p+ k, _+ f; Y# r' D1 z* c0 ^
+ a" X3 s/ E3 Q2 P& D关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。
+ o+ [/ `4 l) I0 W不知道你有没有兴趣一起开发?我想做成这样的
5 w- G5 M( ^5 }" ]$ |' g! i. |http://www.hi-pda.com/forum/viewthread.php?tid=1210672- K7 z9 u  M5 O0 X0 t5 q
$ l1 ^. M1 U6 M
# J; Q7 [2 H5 e1 ^6 ?; e# I# j
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:( ]. F' Y, s" O
  1. 0 p3 ~$ A3 p$ k* O8 j+ j- v# l* i
  2. (function _my_code(window) {6 K  `2 }* U1 q* b1 N/ H
  3.    function u(c, n) {..}( |3 E7 q/ e1 _& o- G1 L
  4.    ..  
    , }5 G8 Z3 @- O$ U* x5 q/ @, H6 ]
  5.    function w() {..}8 e" S9 ^2 |& j0 H
  6.    var F = 0;7 j9 O# ^+ B8 W& j2 ~5 I
  7. - H1 s: X+ A, N3 c1 m0 _
  8.    function i() {
    7 h2 X8 u+ S% c+ n+ k) u
  9.      if (!F) {
    $ V3 G2 t9 M% }5 K! ^2 Q' m
  10.        F = 1;# I/ ]0 p; ~/ h1 h2 P) s0 N- s6 e
  11.        w();
    # c/ K+ ~5 f. _2 B: o
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);: L) r1 [1 a" K3 X' d! k  S
  13.      }
    3 {% ?, ]1 y! }
  14.    }
    ! m6 j6 [) A+ v1 U' ?
  15.    if (window.addEventListener) window.addEventListener("load", i, false);
    : ~# {- m' n% V2 u
  16.    else window.attachEvent("onload", i);
    ) P: X' U* C' ^  ~  ^( c
  17.    
    ! _  L; x1 M+ p. V) M
  18. }) (this);  /* In global scope, "this" is the window object. */
    ) ~3 a0 i6 Z! M3 O9 W" E% F8 X8 k
复制代码

% N* V& ~) p% g1 E2 i# r8 p% }7 a9 r$ m, _6 m* [
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
" `( m: r) R  P; e7 n7 r, S
- G- d# K2 @! x" j) k另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:302 _/ z' P. M  ^- T
已经修改了online demo,加入了对内嵌JavaScript的支持。7 g- U5 _% s3 T5 o
! c4 o$ `$ ]% W8 E
关于插件,联系过ChaZD插件的作者,看他能 ...
9 B& I! w' Q7 ^" o0 o7 |6 p
% }5 [& g1 `1 f5 y  ]( ~  m
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果! Q; E$ `1 ^/ f  ~/ K
要是可以左边双击网页上的单词,右边直接出查询结果就更帅了' e$ s1 U; i2 I: N4 y

' v2 ]* S, j5 Mmdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
. {8 ~$ u$ j9 D5 c: n1 [4 S! y3 f当时倒是没考虑模块化那些,以后有时间再改吧
7 F4 l* T/ s0 u2 ]$ \
; m# d( A% y( b一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

7 N& o5 C7 T5 U/ h另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

9 p4 {+ V$ ?1 a1 |, B) ?0 K( x8 ~5 `3 x: I9 O. e6 M* a  H9 F
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询4 R/ l# S. K+ V
resize是为了对齐单词用的8 D; |& o6 }- O' E5 }
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法% S) ]4 |0 g' g( X& `- t+ D

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
+ f' Q9 w9 b) a$ R0 q+ h1 H* E$ x差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
! S% @/ T: g9 c" t
画个图
: l# }" |. V/ N' }9 G
0 e/ N1 h3 e( G5 ~

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便
      x! d: t6 n- ^* c: n) O/ h
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-29 11:01 , Processed in 0.051126 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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