|
楼主 |
发表于 2015-9-4 13:30:21
|
显示全部楼层
本帖最后由 fengdh 于 2015-9-4 16:32 编辑 0 T! Z! P4 O5 y, m3 p8 n4 L
* 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
- 0 p3 ~$ A3 p$ k* O8 j+ j- v# l* i
- (function _my_code(window) {6 K `2 }* U1 q* b1 N/ H
- function u(c, n) {..}( |3 E7 q/ e1 _& o- G1 L
- ..
, }5 G8 Z3 @- O$ U* x5 q/ @, H6 ] - function w() {..}8 e" S9 ^2 |& j0 H
- var F = 0;7 j9 O# ^+ B8 W& j2 ~5 I
- - H1 s: X+ A, N3 c1 m0 _
- function i() {
7 h2 X8 u+ S% c+ n+ k) u - if (!F) {
$ V3 G2 t9 M% }5 K! ^2 Q' m - F = 1;# I/ ]0 p; ~/ h1 h2 P) s0 N- s6 e
- w();
# c/ K+ ~5 f. _2 B: o - if (!window.ActiveXObject && window.addEventListener) window.addEventListener("resize", w, false);: L) r1 [1 a" K3 X' d! k S
- }
3 {% ?, ]1 y! } - }
! m6 j6 [) A+ v1 U' ? - if (window.addEventListener) window.addEventListener("load", i, false);
: ~# {- m' n% V2 u - else window.attachEvent("onload", i);
) P: X' U* C' ^ ~ ^( c -
! _ L; x1 M+ p. V) M - }) (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元素。 |
|