在 Firefox/Chrome 的对象原型上有一对方法 __defineSetter__/__defineGetter__ 用来设置在设置或读取对象属性时执行代码,使用它们可以来用模拟各种浏览器不支持的属性,也可以用来设置对象的自定义事件。
在 IE9 也有类似的方法,不过不是在对象原型上,而是 Object 的方法:Object.defineProperty。由于不在对象原型上,需要把对象作为第一个参数传递给函数,setter/getter 则和其它变量组成一个对象作为第三个参数。
defineSetter/defineGetter 和 defineProperty 都可以互相模拟实现。作为古老的、生命力顽强的 IE6 并没有类似的方法,只能有限制地实现部分功能。IE 独有的 onpropertychange 事件在 HTML 元素属性改变时触发,用它来模拟 defineSetter 功能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| /*
* onpropertychange 模拟 defineSetter
* author: z@rndz.org
*/
if(!Object.defineProperty && document.body.onpropertychange!=undefined){
Object.defineProperty = function(obj,prop,desc){
if('set' in desc){
obj.property_define[prop] = desc.set;
obj.property_define || (obj.property_define = {});
obj.property_func || obj.attachEvent('onpropertychange',obj.property_func=function(e){
e = e || event;
Function(this.property_define[e.propertyName]||'').call(this,this[e.propertyName]);
});
}
}
} |
注:
- 这个方法只适用于 HTML 元素
- 只能实现 defineSetter,defineGetter 不能触发事件
- IE8 也有 Object.defineProperty,但同样只适用于 HTML 元素
最近上网的时候经常会跳出个天猫的页面来,刚开始以为是哪个网站漏网的弹窗,顺手就叉了!
以其出现的频率,很快我就发现,这并不是弹窗,更改来源页面的变相弹窗。
以 google 和天猫搜索,很快便得到一个目标“机锋网”(一个安卓主题网站,最近新换的xt615,所以搜到这个的概率比较大)。
在源码里搜索,跳转代码就在下面这个脚本里:
http://nv-gboy.googlecode.com/svn/trunk/navigatoral.js
脚本经过简单压缩,解压后内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| if ("undefined" == typeof(_5had0w)) {
_5had0w = [];
_5had0w.ssite = new RegExp("(www.baidu.com)|(www.google.c)|(www.youdao.com)|(search.cn.yahoo.com)|(search.yahoo.com)|(114search.118114.cn)|(bing.118114.cn)|(search.114.vnet.cn)|(bing.com)|(www.soso.com)|(www.sogou.com)|(www.taobao.com)|(gougou.com)|(www.gouwo.com)|(cache.baidu.com)|(m.baidu.com)|(baidu.asp)|(hao123.com)|(265.com)|(114la.com)|(115.com)|(etao.com)", "i");
_5had0w.win = window;
try {
if (parent && parent.f && parent.document.getElementById("fulliframe")) {
_5had0w.win = parent
}
} catch(e) {}
_5had0w.getcookie = function(sName) {
var aCookie = document.cookie.split("; ");
for (var i = 0; i < aCookie.length; i++) {
var aCrumb = aCookie[i].split("=");
if (sName == aCrumb[0]) return unescape(aCrumb[1])
}
return ""
};
_5had0w.setcookie = function(sValue) {
date = new Date();
date.setMinutes(date.getMinutes() + 100);
document.cookie = "oc_busy=" + escape(sValue) + "; expires=" + date.toGMTString() + ";path=/"
};
_5had0w.mall = "http://gomallg.blogbus.com/?76";
_5had0w.np = false;
_5had0w.nvIt = function(lochref) {
try {
_5had0w.win.opener.location = lochref
} catch(e) {
try {
_5had0w.win.opener.navigate(lochref)
} catch(e2) {
try {
_5had0w.win.opener.opener.navigate(lochref)
} catch(e3) {
_5had0w.np = true
}
}
}
};
_5had0w.nvUrl = function() {
var _co = _5had0w.getcookie("oc_busy");
if (_co == "" || _co.indexOf("mall") < 0) {
_5had0w.nvIt(_5had0w.mall);
if (!_5had0w.np) {
_5had0w.setcookie(_co + "_mall")
}
}
};
_5had0w.oload = function() {
if (_5had0w.win.opener) {
if (_5had0w.ssite.test(_5had0w.win.document.referrer)) {
_5had0w.nvUrl()
}
}
};
try {
if (document.attachEvent) {
window.attachEvent("onload", _5had0w.oload)
} else {
window.addEventListener("load", _5had0w.oload, false)
}
} catch(e) {}
} |
简单解释:
在网页打开后判断来源页面是否在指定列表里,如果是的话判断cookie(是否已经跳转过),对于没跳转过的页面使来源页面跳转到“http://gomallg.blogbus.com/?76”,这个页面再跳转到天猫。
要防止的话把这个脚本地址添加到广告过滤列表(推荐,简单)或添加 cookie(没测试)就可以。
吐糟……:
机锋网还有人在管理吗?又或者……这个问题应该有一段时间了,论坛上也看到有人提出(虽然只看到一贴……)!
AD还真是无孔不入,狂轰乱炸式的效果除了令人反感外真有那么好的效果?因为安全原因,主流浏览器默认禁止的好多JS方法,opener 也要这样??
在天台吹风的时候想起昨天在CB上看到新闻说今晚有双星伴月的天象。一时兴起,想给它拍下来。看看天空,看看时间,六点半,星星三两颗。下楼找找准确时间方位,西南低空,七点左右。顺便下个指南针(有备无患)。
再上天台的时候转一圈就找到月亮了(指南针什么的完全打酱油),也看到了两颗星星,就是下面那颗有点暗淡。
我拍,我拍,我再拍……狂汗,拍下来的都是斑点,月芽都变月饼了!
再下楼,看攻略(数码相机、夜空什么的)、找相机(太久没用,电池都快漏光了)、备份TF卡(相机不支持的HDD模式,另一张在手机里)。
到天台上用三爪鱼(买相机送的,懂吧)固定到栏杆上,调好角度,连续拍摄。
咔、咔、咔……就剩一颗星星啦!
这张手机上拍的,至少能看出来是个月芽……月饼就不上了

相机拍的,能看清楚,就是没什么感觉……

我的笔记本进水,不知道该说幸运还是不幸,笔记本基本上没问题,除了硬盘。水通过散热孔进到硬盘的位置,硬盘的驱动电路跟泡在水里差不多。由于没有备份,Z小窗口短时间内不会再更新,另外 chrome 的侧栏书签当时上传不完整,下载来不能用,不用再下载了。
新硬盘已经到手,西数黑盘 WD5000BPKT。网上关于这块硬盘的信息不多,评价倒是不坏,只是实测结果只比之前的WD3200BEKT 好一点。
顺手又买了张三星 C10 的 TF 卡,标称读 24MB/s 写 21MB/s,实测读 19MB/s 写 18MB/s。
附:
西数硬盘产品型号规格
三星SD卡/内存/SSD 序列号验证
输入大段文字的时候除了需要看着原稿外,还要看着屏幕防止输入错误。ImEReader 可以把你输入的内容读出来,使你可以专心看着原稿输入,而不用再看屏幕校对输入的内容。
注:软件使用微软 TTS 引擎,2000/xp 下默认没有中文语音,可以到下面地址下载。
http://g.iciba.com/dictdown/tts.html
下载 ImEReader :ImEReader (77)