文章分类 » web dev

DNS Flusher 2.0.3 在ubuntu下不能用了

升级了一下版本,竟然不能用了,查了一下,原来是文件名大小写的问题…
插件目录的chrome.manifest

overlay	chrome://browser/content/browser.xul		chrome://dnsFlusher/content/dnsFlusher.xul

#这里应当改成
#overlay	chrome://browser/content/browser.xul		chrome://dnsFlusher/content/dnsflusher.xul

overlay	chrome://navigator/content/navigator.xul	chrome://dnsFlusher/content/dnsFlusher.xul

#应当改成
#overlay	chrome://navigator/content/navigator.xul	chrome://dnsFlusher/content/dnsflusher.xul

content	dnsFlusher									chrome/content/dnsFlusher/

skin	dnsFlusher		classic/1.0					chrome/skin/classic/dnsFlusher/

修改之后重启firefox就可以了
作者肯定是用win系统,文件名不区分大小写,所以不会有问题,其他linux,mac就会找不到文件了..

firefox favicon丢失

测试环境: firefox3.0 – 3.5

强大的qa同学,连favicon都照顾到了,具体情况:有个页面刚进去的时候时kaixin网的favicon,加载完毕是人人网的favicon~

demo:https://bluehua.org/demo/favicon_firefox.html









页面加载过程中,如果使用脚本修改锚点,firefox便会到server的根目录取默认的favicon.ico,如果取不到就变空了,如果取到了,但跟指定的favicon不一样,情况就跟qa同学看到的一样,更神奇了..

但是发现像下面这样window.onload时改变锚点没有问题
demo:https://bluehua.org/demo/favicon_firefox_onload.html









getAttribute(‘onclick’) in IE

第n次火星了,可是依然没去过火星.
这个是最近用到才知道,需求是替换onclick属性中的关键字,但是俺单纯的以为geAttribute都会返回一个字符串给我,没想到ie又一次显示了它独到的见解~


click me~

ff下输出

alert('click');
string

ie6和ie7下输出:

function anonymous()
{
alert('click');
}
function

ie8下输出:

function onclick()
{
alert('click');
}
function

其他事件属性肯定也会有同样表现,ie8十分搞笑,换了一个函数名…

最后对于ie我只有这样了:


click me~

替换js中的字符串常量为变量

最近需要把整站js中的域名替成变量,awk查资料写了大半天也没整出个啥,话说我的正则还是太初级,话说我买的正则书也不知跑到哪去了,话说好书还是要放到家里

于是还是用python,没有用正则,但是好像跑起来真的比awk快~

脚本下载:replace_keyword.zip

效果:

//替换之前
var s = '';
//替换之后
var s = '';

使用方法:
首要要修改脚本里要替换的关键词

config['keyword'] = 'abc.com'
config['vname'] = 'siteDomain'

然后

python replace_keyword.py ./myscript.js > /tmp/ooxx
mv /tmp/ooxx ./myscript.js

批量替换的话就需要写个简单的shell:replace_keyword.sh

#!/bin/sh
python replace_keyword.py $1 > /tmp/ooxx
mv /tmp/ooxx $1

批量替换整个目录

find ./ -name "*.js" | xargs -i sh replace_keyword.sh {}

最后任务远没有结束,这个脚本还不够强大,它只会替换字符串中的关键字,作为对象属性名称的字符串不会替换,正则中的关键字无法替换,像下面:

var config = {
    'blog.abc.com' : 1,
    'game.abc.com' : 2
}
//需要手工替换为
var config = {};
config['blog' + siteDomain] = 1;
config['game' + siteDomain] = 2;

if ( /abc\.com/.test(str) ){}
//需要手工替换为
if ( new RegExp( siteDomain.replace('.','\.') ).test(str) ){}

所以运行完脚本之后还需要检查未替换的地方,手工完成

find ./ -name "*.js" | xargs grep 'abc\\\?\.com'

@¥竟然能使ie6的文字链接神奇变形。。

更新:
sonic同学发现了bug的起因:
只要a标签的innerHTML是以http[s]://开头或者包含”@xx”类似email的字符串就会出现这种情况。。
———————————————-
今天qa发现的巨灵异的bug
———————————————-
由于网站域名切换,有些老的数据无法短时间切换,所以打算用js替换。具体实现:当鼠标移到link上时判断是否是老域名,如果是则替换~
代码类似下面

https://bluehua.org/demo/href+@.html

这段代码在除了ie6的浏览器都是正常的,鼠标移上时两个link的href都变成http://oo.test,但是ie6下第一个link出问题了:鼠标上去,链接文字没了。

“@¥”这两个字正好是qa组leader的id后缀,真牛x~