======================================================
注:本文源代码点此下载
======================================================
评论
1737287
2009-08-26 18:07
写的很好,你的“运行代码”是怎么弄出来的呢?
回复 引用 查看
#2楼[楼主]
2009-08-26 18:12
@lola
网上教程一大把,自己google吧。我这个考虑到许多情况,实现非常复杂。网上的基本三行搞定。
回复 引用 查看
2009-08-26 20:20
引用司徒正美:
@lola
网上教程一大把,自己google吧。我这个考虑到许多情况,实现非常复杂。网上的基本三行搞定。
就把你的那些想法说出来,或者写篇文章出来,晒晒也不错啊
回复 引用 查看
#4楼[楼主]
2009-08-26 20:37
@蔡九毜
我不太愿意别人做无关主题的讨论,既然说到这份上,就说说吧。其实真的没什么的。
1首先我们取得textarea的内容,这个简单,就是它的innerhtml
2创建一个新窗口,就是var newwin = window.open('','','');
3然后就是为新窗口添加内容,即newwin.document.write(code);
完整代码是这样
var code = document.getelementbyid(id).innerhtml;
if (code!=""){
var newwin = window.open('','','');
newwin.opener = null;
newwin.document.write(code);
newwin.document.close();
}
以后有问题可以通过短信留言给我,我有空一定会帮忙,但请不要这样问与主题无关的问题。
回复 引用 查看
2009-08-26 21:59
这文章不错啊,那个ready的代码先收下了,以后可以代替window.onload,window.onload感觉稍微有点慢,呵呵
回复 引用 查看
2009-08-26 23:22
菜鸟2009[未注册用户]
作为研究还是有意义的。
但是,实际上我们确实只需要$().ready()
回复 引用
2009-08-27 09:39
学习...
想问下为什么这样写?
obj["e"+type+fn] = fn;
obj.attachevent( "on"+type, function() {
obj["e"+type+fn]();
} );
为什么不直接用obj.attachevent( "on" + type, fn); ?
还有第一个应该没错.
window.onload = fn();只是这里提前调用了。
回复 引用 查看
2009-08-27 10:23
momofiona[未注册用户]
不好意思,里面有个示例代码错了。
if (typeof window.onload != 'function') {
window.onload = fn();
}else {
window.onload = function() {
oldonload();
fn();
}
上面window.onload = fn();
应改成window.onload = fn;
你在注册onload事件时就运行了fn,此时还没加载到body当然会出错。
回复 引用
2009-08-27 10:45
jquery
回复 引用 查看
#10楼[楼主]
2009-08-27 10:45
@freewind
快一点点吧,这个已是当前元素的成员,就用不着到外围作用域取fn了。
回复 引用 查看
#11楼[楼主]
2009-08-27 10:56
@momofiona
谢谢你的提醒,以前学习javascript死记硬背不求甚解但又不心小记错了的恶果。原来我一直把这个分支的绑定函数提前运行了……
回复 引用 查看
2009-08-27 11:45
xman111[未注册用户]
if(!+"\v1"){
(function(){
try {
document.documentelement.doscroll("left");
} catch(e) {
settimeout( arguments.callee, 0 );
return;
}
loadevent();
})();
}
楼主能不能解释一下 这里面的 arguments.callee 指向的不是此function(){}()本事,而是 外围函数。
回复 引用
2009-08-27 11:48
xman111[未注册用户]
不好意思,打错字 本事-> 本身
回复 引用
#14楼[楼主]
2009-08-27 13:18
@xman111
arguments.callee 表示对函数对象本身的引用,也就是那个闭包,
(function(){
try {
document.documentelement.doscroll("left");
} catch(e) {
settimeout( arguments.callee, 0 );
return;
}
init();
})();
不是onready函数。
我们可以把问题最简化为
var a = {};
a.b = function(){
alert(arguments.callee)
}
a.b();
回复 引用 查看
2009-08-27 13:53
xman111[未注册用户]
(function(){})() 这样的方式就是创建函数并执行了吧。为什么还要去执行(settimeout)一次。我有点困惑。
回复 引用
#16楼[楼主]
2009-08-27 14:57
@xman111
就是不断执行,直到dom树完成,只有dom树完成后才有doscroll这个方法。
回复 引用 查看
2009-08-27 15:08
xman111[未注册用户]
明白了,谢谢,问一下这样使用,会不会造成内存的溢出。
回复 引用
#18楼[楼主]
2009-08-27 17:45
@xman111
不会,如此干净简单的循环都内存泄漏,开发商可以去死了!
回复 引用 查看
2009-08-29 11:25
呵呵lz写的很好啊,一定花了很长时间想的吧,呵呵支持
回复 引用 查看
2009-08-29 11:51
1 按功能判断比if(!+"\v1"){ 好
2 小问题,可以直接js.onready = function(loadevent) {
3 大问题,多次调用onready 会产生多个闭包,其实那个闭包只需要一个,把loadevent整合一下吧
回复 引用 查看
#21楼[楼主]
2009-08-30 14:16
@cloudgamer
1不明白什么叫做按功能判断,这个凡是ie就通杀吧。
2分开写条理清楚点,就像jquery的each,css等也分开写
3这个真的要请救你了,不过我看到jquery也是这样实现的,应该没什么问题吧。
回复 引用 查看
2009-09-05 15:21
@司徒正美
你不是分析过de的addevent的嘛
看看他怎么把事件都加载在onxxx中的而且还可以移除
回复 引用 查看
2009-09-22 15:17
有一个地方不太理解。
代码中的"if(!+'\v1'){}"是什么意思呀?
回复 引用 查看
#24楼[楼主]
2009-12-30 01:20
2009/12/30改
回复 引用 查看
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/