hostadmin 终于升级了……

这个东西 是 2010年1月的作品 当时 还向 全公司 技术邮件组 群发广告了一下

软件 需要维护呢阿

去年 11月 Mozilla 给我邮件 让我 升级

我比较懒 …… 最近 ff 升级到了 4 一些用户 开始流失啦

所以 我自己就 忍不住了

——————

记录下 升级的心得

1 regx 死循环

原来 这么写的 /regx/.exec ff3 没问题

但是 到了 4 就变成死循环了

每次 /regx/都是新的

改成

regx = /regx/

regx.exec 就好啦

2 丢失的timer

timer 无缘无故 丢失

查不到原因 后来 追 句柄 发现不丢了……

突然想到可能是 gc掉了

于是 将 闭包里边的 timer句柄 放外边一个 问题解决

3 gecko sdk2.0 升级

hostadmin内嵌一个 dll 寻找%windir%

这个也跟着升级了一下

https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0

参考

 

源代码

http://code.google.com/p/fire-hostadmin/

 

下载安装

https://addons.mozilla.org/zh-CN/firefox/addon/hostadmin/versions/?page=1#version-1.1.0

Read More

a 标签onclick 不能用的问题

a 标签合法 需要 href属性

但是又不想让他跳转 所以写进如 javascript:void(0)这样一个 链接

奇怪的事 在IE 6 FF 3.0 都不能触发onclick 了

后来发现 改为 javascript:;就没有问题了

估计事 void(0)返回了 false

Read More

write less do more!

jQuery果然是神
我渐渐的学这适应 他的模式
学会不污染全局名称空间

而我的itemstatlite实现我仅仅用了30行代码
仅仅30行
就实现了 一个tooltip

还没有哪个一个构架让我如此的改变编码风格
偶像……

Read More

jQuery

前些日子 itemstatlite r84 终于解决了 在ie 6 7 ff chrome 上的兼容问题
自己感觉自己挺牛b的
于是觉得进步点八
买了本 pro javascript 和 jQuery
今天看的差不多了

我真的无地自容了
我的代码就是一个sb 一个菜鸟 写出的代码……

哎还需要进步啊 好好学习吧

Read More

document.all的错误位置

b/s是一个有前途的东西
比如google
每天都用browser
可是它却分那么多种类

pro javascript上说
有点自尊就别用 ie了 不过这个我算是服了
而且 ie 还分很多版本 ie5 就算了根本不能用
ie6 ie7 看一个东西还不是一个样 估计ie8 还有自己的形状

ie最可恨的是他的错误控制台
要不是pro javascript 我真不知道怎么看他的报错
他的报错居然总是跟错误实际位置差一行
而且更可气的 根本不能正确表达错误的文件是那个
报错之后还得在疑似错误的地方 修改一下 再报换行就是找到错误了
更恨的是 ie 有时候就忘记报错了
……为了在ie6 ie7中兼容 费尽了心机

另外说下chrome
他应该是有个bug被我遇到了
有连接接入的网页 不能执行 onload
而刷新就可以

opera台表准了
错一点就不行 哎 者还让根ie兼容么……

还是ff最善良
不过chrome的脚本解析速度太好了
不过我觉得他用webkit跟苹果一个 熊样太丢人了
应该自己渲染

看着chrome的速度 我相信486 也可以玩wow

Read More

closure

javascript中的这个概念 不好理解
终于 我通过lua 好像理解了他的概念

lua把一切算作 变量是一个简单有效的行为
_G 不就是window么……
哈哈

Read More

一个domready

domready是个麻烦的问题
特别是 ie 实在是标新立异

经过翻看很多代码 感觉这个还是比较可靠
代码原来 替换window.onload 我修改为挂钩了

function domReady(fn)
{
if (document.addEventListener){
document.addEventListener(“DOMContentLoaded”, init, false);
}

if(window.addEventListener) window.addEventListener(“load”,init,false);
else if (window.attachEvent) window.attachEvent(“onload”,init);

var _timer = setInterval(function() {
if( document && document.getElementsByTagName && document.getElementById && document.body ){
init();
}
},20);

function init(){
if (arguments.callee.done){
return;
}
arguments.callee.done = true;
if (_timer) {
clearInterval(_timer);
_timer = null;
}
fn();
}
};

domReady( ….. );

Read More