掌上百科 - 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 ~) C# y, B9 h0 F4 e, y1 ]
bt4baidu 发表于 2015-9-3 15:36& q& C, y: L: B0 L2 A
https://www.pdawiki.com/forum/fo ... &extra=page%3D1
& m' b! D" G, P  m3 A里面的动态功能都是 ...
$ @- Q5 n% `  x) t9 U

9 S6 q# _7 {; [2 F5 }8 B已经修改了online demo,加入了对内嵌JavaScript的支持。
6 ]8 {1 ~6 E$ s6 I5 f2 f/ F8 p. j, o0 s
关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。: i$ q# s; a, ?/ H
不知道你有没有兴趣一起开发?我想做成这样的
3 I0 ~  v9 M9 L# J; `http://www.hi-pda.com/forum/viewthread.php?tid=12106722 V  e8 T7 Q8 I) T* {  F$ i
7 h7 W8 A/ S; G/ R$ R3 |

: |% ]4 I) Z- k有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:
- m  [3 b/ j; g9 m* W  Q, Q) h5 u
  1. - c& M: h8 l9 t3 a* M  D
  2. (function _my_code(window) {
    * X- m$ z; K' c8 n, |
  3.    function u(c, n) {..}! i$ Q- E  |. {  u0 B
  4.    ..  * ^+ R+ [# A3 S+ t
  5.    function w() {..}; r' i# X$ r# W* W
  6.    var F = 0;4 l8 f! a# [' f1 ~2 n

  7. 4 H0 c  u7 M* x% R: ~
  8.    function i() {: l6 U' v1 x5 \+ u
  9.      if (!F) {1 ~- ]3 m- ^" {& `( `- Q" [
  10.        F = 1;
    # ~, C1 R% C( D5 Q( Y. R. u
  11.        w();
    1 k! G$ a  S) \  n; a
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);7 r" A, L' A" h$ W
  13.      }5 ?, A( V* L! {0 T
  14.    }, U6 v! b8 p- u3 Y
  15.    if (window.addEventListener) window.addEventListener("load", i, false);( r+ [$ D" G/ M9 e9 {
  16.    else window.attachEvent("onload", i);. C; L: m/ g* l; s7 a8 O. |1 ]/ h5 {* h
  17.    
    2 |& S. \: H9 j5 k3 Q
  18. }) (this);  /* In global scope, "this" is the window object. *// n7 d1 I, ]: p: f) p
复制代码

9 `6 `& `6 t3 u" @0 {5 H  h4 A2 c5 X, |$ N
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。: `7 m" p# q! X% o& v* _1 k

+ T0 V5 F) w2 W) u2 M2 L另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30
& j4 ]7 S" i" L0 r. m3 `- B已经修改了online demo,加入了对内嵌JavaScript的支持。: M9 M# m" I& x
0 f9 m9 S0 }0 q( `" n0 _
关于插件,联系过ChaZD插件的作者,看他能 ...

2 R% }- ]" R' d
6 A: J4 e  z7 d( c差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
7 [/ y2 t8 g( C3 Y% L要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
  Y. ^* ?+ J: c, n; l% l4 }5 Q* J* \; M( I
mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题
2 V& k3 \  t, C: B3 E* w当时倒是没考虑模块化那些,以后有时间再改吧
5 n8 W' k5 ^1 @& F1 R/ U
- G: Y% N& q; p一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

) ^# i' ]5 {: o1 g4 P另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

) ?: D" F- F4 {5 u$ Q* H: G# z& \+ E. [
l.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询
! |2 C2 Z0 B1 s: ]8 ^  O  dresize是为了对齐单词用的
) [# y% P6 ~, d4 A  I8 m* QquerySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法% M0 h" [8 z& M+ O9 L9 U6 K4 i

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
, E5 x  `. W* _$ r, }2 Q3 v5 D差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...
/ F4 p# O3 [$ ]. Z
画个图
$ C9 I% q3 c+ M9 B% I2 D3 n1 @' D2 v$ N4 W

该用户从未签到

发表于 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 | 显示全部楼层
    这个今天有又试了一下,很方便
    7 N0 N' N! B* k/ M
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-26 18:24 , Processed in 0.038452 second(s), 5 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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