掌上百科 - 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 编辑
4 \/ V  n0 b9 G- j$ c
bt4baidu 发表于 2015-9-3 15:36$ U  g1 O, O( Z6 m0 y' ?
https://www.pdawiki.com/forum/fo ... &extra=page%3D1
. w$ h5 ]6 l/ x$ @. N3 v# ^; I, [里面的动态功能都是 ...

7 U$ N/ A" R, ~" o
9 B. f( |* I" H5 X% g/ D' N已经修改了online demo,加入了对内嵌JavaScript的支持。- o$ ~& T- n8 ]% ]/ u

! J$ Y3 \7 |+ z5 n8 \2 T/ o8 J/ L/ ^关于插件,联系过ChaZD插件的作者,看他能不能加上对MDict的支持。. b6 ~5 t3 @; S7 G2 e" v, W
不知道你有没有兴趣一起开发?我想做成这样的
; J2 N; I0 I7 g$ ?! A. Y1 Rhttp://www.hi-pda.com/forum/viewthread.php?tid=1210672
- v* Z# L: A7 x# H' G; r# I" l* A8 I8 j* v% X7 D, F- g8 ~' Q
" T8 @7 Q% C( T
有一点建议,内嵌JavaScript(l.js)中直接用了很多全局变量/函数,对于模块化来说不是很好。建议用匿名函数即刻调用的形式来尽量避免污染全局空间。比如:8 }% Z! @$ @- f3 f" R/ l0 I
  1. & S, J, I# W/ m- h" z
  2. (function _my_code(window) {
    9 g0 c1 v& |- ]' D% z) b4 T( G
  3.    function u(c, n) {..}# {4 {& x& s& ~. _2 o1 K
  4.    ..  
    / j1 e- F7 \$ }9 w) q% ^
  5.    function w() {..}
    8 n! W( z! \8 X" D. l% r
  6.    var F = 0;
    ! A0 @& R! g3 B: u' s4 R  b1 I

  7. 0 B( G+ @# t* Z; P; N
  8.    function i() {
    " p4 I/ r. B3 w: q/ s
  9.      if (!F) {( x5 C0 X" t2 Y
  10.        F = 1;
    ) k: e9 s" K/ ~
  11.        w();
    % z* t, m1 }% u
  12.        if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);& a$ G, `# D' U; T2 l0 D4 o9 E8 ^
  13.      }9 }5 Y0 ^6 `+ E; s+ v6 V# M4 @# O+ u
  14.    }
      v7 @  y, F0 Z: a
  15.    if (window.addEventListener) window.addEventListener("load", i, false);( T- h9 U6 w5 p/ \
  16.    else window.attachEvent("onload", i);1 n" l; V. _/ L, B  n: v# {
  17.    
    2 Q  ]7 d' ]9 E1 t! k9 ]- @
  18. }) (this);  /* In global scope, "this" is the window object. */
    5 q; p) r. y# P2 Q5 i( Z" u
复制代码

0 R  [# w" K0 J8 k+ B# c; b6 _9 T) Z( `
具体到你提供的 l.js, 只在window的onload事件中调用resize处理,以显示选中(或初始A)字母开头的单词项。而在我实现的查词界面只会部分更新单词定义的内容,不会每次重载页面以立即显示A开头的单词列表。无奈我之好延迟发送resize事件。不知道你可否修改的更好一点。
( v! R: e1 N# \. r- M
" x& S# R4 |8 P! I7 ?' B1 A* K8 ~" G另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。

该用户从未签到

发表于 2015-9-4 14:07:47 | 显示全部楼层
fengdh 发表于 2015-9-4 13:30- X4 @2 E9 m- _! X/ ]$ s
已经修改了online demo,加入了对内嵌JavaScript的支持。3 s" ~/ U4 h' P3 c
+ \+ d+ I& h% i1 G+ Q/ ?' {0 _
关于插件,联系过ChaZD插件的作者,看他能 ...

0 a; {; F3 {2 [, G7 U7 A( ^& R4 q1 Z5 `- _$ `" k: N. [
差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的,可以快速跳到具体某一本词典的查询结果
7 u1 N) V$ N7 o) |# n' S要是可以左边双击网页上的单词,右边直接出查询结果就更帅了
1 ]+ S7 p% K9 F5 `0 l% y
6 R( U: H( |* Z- `( H$ ]mdict格式内嵌js的词典,差不多数我做的最多,js写得最复杂的要数本人的voc系列了,只要这个支持了别的应该都不会有问题4 H0 }: B1 g: V% F" i: l/ ~0 t6 m
当时倒是没考虑模块化那些,以后有时间再改吧1 t( p- T9 @" S; L+ r4 Y: s

% i) |. X% A' |' M  E( ]& D3 H一起开发,恐怕抽不出那么多时间,而且js差不多是我最不喜欢用的语言,没怎么研究过node.js啥的,只会web1.0那些+AJAX,水平实在是相当有限了

该用户从未签到

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

% ]9 G2 R5 M5 E+ V另外,现在JavaScript一般不用 with 语句以免降低程序性能。而大多数浏览器除了 document.getElementByTagName() 之外,还提供了 querySelectorAll()和 querySelector(),使用CSS同样的语法更容易选中特定HTML元素。
! D' q9 T& ?% q; K& d5 ~

* n8 c7 W1 _. `$ Nl.js不支持也无所谓,那几个level主要是背单词表用的,不涉及查询- C$ N; p; h% F3 B
resize是为了对齐单词用的% D3 J' K. e; C1 t
querySelectorAll啥的没敢用,因为PC版mdict的IE内核是6.0的,XP上最多升到8,但是用mdict的人还特别多,当时为了兼容想了很多办法
: }/ D9 U6 g2 u, {( ~

该用户从未签到

发表于 2015-9-4 16:26:35 | 显示全部楼层
bt4baidu 发表于 2015-9-4 14:07
4 m& Y( g  e3 q6 i! m. C2 Q差不多就是chazd那种效果了,最好弄成Goldendict那样的查询结果界面,里面再弄个右侧小浮动条之类的, ...

* g! C2 ~2 x0 W9 P( O画个图
2 C+ x) P$ _4 i1 u6 ?1 v5 L, Q7 R+ K. b
% o2 t" J) {0 F9 o9 O. C1 g. 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的每日心情
    擦汗
    2022-12-2 08:35
  • 签到天数: 11 天

    [LV.3]偶尔看看II

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

    该用户从未签到

    发表于 2020-7-17 22:37:05 | 显示全部楼层
    这个今天有又试了一下,很方便& W! j0 s* i& S* [; T5 k8 o
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-2 20:08 , Processed in 0.020795 second(s), 16 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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