用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
flytosea8的公告
</div> </form> <div class="News"> MSN:wojideni@hotmail.com<br><br> 我的故乡——崇明岛<br><br> <a href="http://www.jdptxx.edu.sh.cn/fly" target="_blank">我的留言板</a> <!-- Search Google --> <FORM method=GET action="http://www.google.com/search" target="_blank"> <td><INPUT TYPE=text name=q style="COLOR: #3399cc; FONT-SIZE: 9px; FONT-FAMILY: Arial; width: 100px; height:18px" value=""></td> <INPUT TYPE=hidden name=hl value=zh-CN> <td><INPUT TYPE=submit name=btnG style="FONT-SIZE: 9px; FONT-FAMILY: Arial; BACKGROUND-COLOR: silver;" value="Google"> </td> </FORM> <!-- Search Google --> <!-- Search Msdn --> <form method="get" action="http://search.microsoft.com/search/results.aspx" target="_blank"> <td><input name="qu" type="text" style="COLOR: #3399cc; FONT-SIZE: 9px; FONT-FAMILY: Arial; width: 100px; height:18px"></td> <INPUT TYPE=hidden name=view value=zh-cn> <INPUT TYPE=hidden name=na value=81> <td><input type="submit" name="Submit" style="FONT-SIZE: 9px; FONT-FAMILY: Arial; BACKGROUND-COLOR: silver;" value="Msdn"></td> <!-- Search Msdn --> <!-- 天气预报 注意这里涉及到编码问题,%B1%B1%BE%A9为城市代码,可用百度查一下,比如输入北京,地址栏中就会出现%B1%B1%BE%字样的内容--> <center><iframe width=157 height=238 frameborder=0 scrolling=NO src='http://appnews.qq.com/cgi-bin/news_qq_search?city=%C9%CF%BA%A3'></iframe></center>
文章分类
A.BBS
csdn社区
Winmag
嘉教论坛
鲁迅论坛
B.Blog
csdn
Infoworld
博客中国
C.It technology documents
MSDN
TechNet
D.Recommended websites
1.微软安全公告
2.Oracle
3.ChinaUnix
4.ChinaJava
7.Ms Technical Articles
8.Microsoft Active Directory Disaster Recovery
9.ICSA LAB
E.ASP
F.Self-culture
G.Interactive English
1.ChinaDaily
2.China Education and Research Network
CRI
H.Music Station
I.Other links
存档

原创  “Web开发中的JavaScript设计艺术”聊天实录 收藏

“Web开发中的JavaScript设计艺术”聊天实录
(2005.01.28)  
 

聊天主题:Web开发中的JavaScript设计艺术
聊天时间2005127日星期四下午200—330

聊天嘉宾:Lostinet(戴立坚)、wch3116(万常华)

 

详细聊天实录:

[刘如鸿]:

大家好,我是《msdn开发精选》的技术主编刘如鸿。首先感谢大家的到来,今天我们邀请了在JavaScript开发中享有盛名的Lostinetwch3116到场和我们一同探讨JavaScript设计中的种种考虑。

[2005-1-27 13:54:00]

[刘如鸿]:

以下是他们的个人介绍:

Lostinet(戴立坚)2004年微软最有价值的专家,擅长于脚本开发和基于ASP.NET企业应用解决方案实现,主要作品为RaneCBMLostinet.Web控件集,CuteEditor 4CuteChat等等。可以通过http://blog.joycode.com/lostinet/ 访问他的个人Blog。现为无业人士,在深圳学英语和减肥。

[2005-1-27 13:55:00]

[刘如鸿]:

wch3116(万常华) 擅长脚本开发及B/S系统架构设计,JSVM 项目负责人。主要作品,JSVMXpRPCWDB。可以通过wch3116@hotmail.com与他联系。现供职于中兴通讯/IT中心,致力于企业应用平台技术整合与应用框架设计。

[2005-1-27 13:56:00]

[刘如鸿]: 现在我宣布一下聊天规则

1。聊天200正式开始,330结束

2. 2:002:30以嘉宾的讨论为主

3. 2:30以后可以自由提问,大家如果有问题,可以通过提交给futurelight,他会将问题提交给嘉宾

4。请不要在聊天室讨论一些和主题无关的话题

谢谢大家的支持和配合

[2005-1-27 13:57:00]

嘉宾[戴立坚]:

大家好..我是戴立坚. 很高兴和万常华来到CSDN上做JS聊天的嘉宾. 很感谢大家来参与这次的讨论.

[2005-1-27 13:58:00]

嘉宾[万常华]:

大家好,非常荣幸有这个机会能与大家在一起交流一下

[2005-1-27 14:00:00]

[刘如鸿]:

虽然一开始JavaScript只是针对脚本设计的,但是发展到现在,已经初步具备了面向对象的功能,两位嘉宾如何看待JavaScript的面向对象呢?

[2005-1-27 14:01:00]

[刘如鸿]:

从我个人的理解,基于JavaScript的面向对象本质上来说可以是Prototype-Based的继承实现方式,因为任何的实现严格意义来说只是采用了父对象的原型

[2005-1-27 14:04:00]

嘉宾[万常华]:

OO 设计思想是 计算机语言向 现实模型靠拢 的必然发展过程,js作为一门脚本语言,也要引入这种设计思想,当然,目前因为语言本身的问题,把js作为一种面向对象的语言来做程序设计还有一些缺陷

[2005-1-27 14:07:00]

嘉宾[戴立坚]:

关于面向对象 , 我觉得现在JS主要作用是操作其他对象. 例如 DHTML 中的window/document/element . 或者是其他环境中的对象 例如用 ActiveXObject 创建出来的对象或MozillaXMLHttpRequest . 但是 JS 本身带的面向对象的功能很弱 . 适合做一些简单的类库. 但很难达到大规模的类库的应用.

[2005-1-27 14:10:00]

[刘如鸿]:

那么我请问,JavaScript在面向对象中还存在哪些缺陷呢?这些的缺陷是否可以通过一些手段去绕过去

[2005-1-27 14:11:00]

嘉宾[戴立坚]:

脚本本身的语法功能很有限 . 并没有 class 这样的功能. 我比较看好的是 Mozilla __defineGetter__/__defineSetter__ , FlashActionScript中的addProperty的功能 . 这些功能为面向对象提供了一定的方便 .

[2005-1-27 14:12:00]

嘉宾[万常华]:

js是一门基于对象的语言,在基于webjs实际开发中,如果引入一些规范,我们基本上可以很少地方需要考虑他与面向对象之间的区别

[2005-1-27 14:12:00]

嘉宾[戴立坚]:

当然 , MSBehavior(HTC)是实现面向对象的很使用的技术 . 这个技术可以定义属性与事件等等 .

[2005-1-27 14:13:00]

[刘如鸿]:

戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库

[2005-1-27 14:14:00]

[刘如鸿]:

戴立坚,我想下面会有些人不太赞同你的观点,有人会举例bindows就是一个很庞大的类库,万常华实现的JSVM也是一个比较大的类库

[2005-1-27 14:14:00]

嘉宾[戴立坚]:

而在面向对象中 ,JS最缺陷的就是无法在语法上直接实现 override(虚拟方法) 的功能. 虽然可以用其他方法来模拟 , 但是写法的特殊和不直观,很影响JS做面向对象的应用.

[2005-1-27 14:14:00]

嘉宾[戴立坚]:

是的 . 我很欣赏 Bindows JSVM . 这些都做得很好 . 如果JS能在语法上提供一些更直接的支持 , 那么我觉得它们会发展得更好的.

[2005-1-27 14:16:00]

[刘如鸿]:

那么对于JScript.NET,你们是如何看待呢?作为.NET环境下的一个半动态语言,除了拥有JavasScript的全部功能之外,还能够利用.NET Framework,按照微软的文档,JScript.NET是第一个实现了ECMA 262 Edition 3的语言,同时也引入了class,package等等关键字

[2005-1-27 14:16:00]

嘉宾[戴立坚]:

如果 IE 等环境支持JScript.Net就更好啦. 可惜现在IE不支持 < script language=jscript.net >.. 所以JScript.Net目前的应用也只在.Net开发中 . 但是做.Net的开发,C#VB.NET这两个更强大的语言 , JScript.Net 的地位真的不上不下.

[2005-1-27 14:18:00]

嘉宾[万常华]:

js能否成,主要在于是否有一个良好的代码组织结构和规范

[2005-1-27 14:19:00]

嘉宾[戴立坚]:

js 是否可对远程URL发送 XMLHttpRequest请求?

可以的. 但是要考虑以下情况: 操作系统是否支持 . 运行JS的环境是否允许你访问该URL. 一般的应用是网站在客户端通过XmlHttp/XmlHttpRequest来访问"本站"的内容 . 这个IEMOZILLA都支持.

[2005-1-27 14:20:00]

嘉宾[万常华]:

Jscript.Net 由于运行环境的限制,导致他在web端没有用武之地,我想MS

对此他是有考虑的

[2005-1-27 14:20:00]

嘉宾[戴立坚]:

同意万常华. 我想当网络速度不在是库下载速度的障碍时,基于JS的库会得到大规模的应用.

[2005-1-27 14:21:00]

[刘如鸿]:

很多人问我过这样的问题,JavaScript里面有真正对象吗?那么他是如何实现的,你们的理解呢?所谓继承呢?是在一个怎样的角度去说的

[2005-1-27 14:21:00]

[刘如鸿]:初步的面向对象是不是应该说成基于对象?

是的,基于对象和基于原型的面向对象,这是一个很有意思的东西

[2005-1-27 14:22:00]

嘉宾[万常华]:

通过一些手段,在本地建立一个cache机制,可以一定程度上解决 网络带宽带来的一些瓶颈

[2005-1-27 14:23:00]

[刘如鸿]:

就我个人而言,我不是特别赞成太依赖于脚本,如果我们将脚本虚拟机的运行环境扩充而且能够跨平台的话,那么这个时候脚本的优势才会更加明显,而目前,不论IE还是Mozilla,脚本解释器的功能还是极其有限的,对于简单的应用,它可以很好的解决,对于复杂的应用,可能好耗费比传统语言更多的精力才能够解决。那么从这个角度来说,我们是不是不要太过度使用脚本

[2005-1-27 14:26:00]

嘉宾[戴立坚]: javascript vbscript 的区别

基本上是语法上,提供的内置对象/函数的不同. vbscript支持Class但不支持继承. vbscript只适合microsoft或兼容的平台

[2005-1-27 14:27:00]

嘉宾[万常华]:

js 的另外一个应用领域是 hta - Html Appliction 作为最接近web的一种应用程序,我们如果撇开 跨域完全 性能方面的考虑,就开发方式和运行方式而言基本上是一致的。

[2005-1-27 14:27:00]

嘉宾[万常华]: javascript 能不能读取远程xml文件的数据

javascript 借助一控件比如 xmlhttp xmldom 可以实现读取远程xml,但这里有一个跨域安全限制的问题

[2005-1-27 14:28:00]

嘉宾[戴立坚]: javascript 能不能读取远程xml文件的数据

这个是可以的 . 请参考 Microsoft.XMLHttp Mozilla XMLHttpRequest . 这两个对象的接口基本一致.

如果是在浏览器上应用 , 则通常会被浏览器拒绝程序访问其他网站的数据.

如果是在一些有更高权限的环境 , WScript , 就能访问其他站点的数据了.

[2005-1-27 14:29:00]

[刘如鸿]:

现在可以开始自由提问,请大家讲问题提交到futurelight,最好指定哪个嘉宾回答您的问题,谢谢

[2005-1-27 14:29:00]

嘉宾[戴立坚]: IE浏览器下,如何用js读取远程URL的内容??

使用 var req=new XMLHttpRequest();

req.open("GET",url,false,null,null);

req.send("");

req.responseXML 就是一个 XmlDocument 对象.

(只适合Mozilla/FireFox或相关核心的浏览器. 另外Opera8也支持)

[2005-1-27 14:31:00]

嘉宾[万常华]:

js运行方式导致性能上不及别的语言,但就逻辑描述能力和一些动态特征,甚至是别的一些语言所不及的

[2005-1-27 14:31:00]

[刘如鸿]: 脚本语言的安全性问题?

这问题很有意思,其实也是基于Web应用的最大挑战,没有绝对的安全,您可以将一些交互性的逻辑放置在客户端,但是对于严格的商业逻辑判断还是需要在服务器处理的。

[2005-1-27 14:33:00]

嘉宾[戴立坚]: 脚本语言的安全性问题?

其实脚本本没有什么安全的问题 . 这些问题都是被它的环境所限制的. 例如浏览器一般不给你使用某些对象,不允许访问本地磁盘,不允许访问其他站点的资源等等..

[2005-1-27 14:33:00]

嘉宾[万常华]: 请万老师介绍一下JSVM好吗

JSVM 本质上是一个javascript 框架,遵循这个框架从事 js 开发,可以实现js code更好地被复用。

[2005-1-27 14:34:00]

[刘如鸿]: js读取远程URL 是什么原因遭到拒绝访问的呢? 是远程URL的服务器不允许还是本地浏览器不允许?

还是安全的原因,从安全的角度考虑,IE是不允许你跨域访问的

[2005-1-27 14:37:00]

嘉宾[戴立坚]: 说点JS的应用层面吧

这个首选是浏览器 . 然后就是用JS ASP WScript . 更有些程序会使用MSScripting技术来加载脚本来扩充程序的功能. 这个和VBA很像.

[2005-1-27 14:38:00]

嘉宾[戴立坚]: 我还想问一下,jscrpit.net将来会有单独的开发环境出来吗?

这个不太清楚 . 我想如果MS要支持的话 ,将会在VS.NET中出现. C#,VB.NET一样的.

[2005-1-27 14:39:00]

嘉宾[戴立坚]: 可是一般浏览器默认是不允许远程发送 XMLHttpRequest请求的,它会弹出对话框提示是否继续,或者干脆说拒绝访问,如何解决这种问题? 可以让它直接访问!比如我有一公用的xml数据要通过几个服务器来远程访问!

主要是考虑隐私的问题. 例如如果别人访问你的网站,如果你的脚本能访问银行网站,那么你就有机会偷到密码了 . 所以浏览器是不允许你这样做的.

[2005-1-27 14:40:00]

[刘如鸿]: 我还想问一下,jscript.net将来会有单独的开发环境出来吗?

我想不会的,微软通过.NET统一了编程语言,没有理由还分离出单独的运行环境,但是我想在Avalon,你是可以使用JScript的,不过这个时候使用C#或者VB.NET这样的语言可能更加习惯

[2005-1-27 14:40:00]

嘉宾[万常华]: 一个良好的组织结构和规范这样的规范应该从哪些方面考虑的? )

我想可以至少要考虑,代码文件的组织结构和js code语法域的独立性。

JSVM中,采用类似java的包结构的规范,使任意两个人开发的js code能放在一起运行,而且他们的语法域相互对立,这样运行起来不会导致冲突。

[2005-1-27 14:41:00]

嘉宾[戴立坚]: 可不可以简单介绍一下 WScript 这个高权限的环境

如果你使用的是 Windows , 建立一个 test.js , 然后里面打 WScript.Echo("Hello World"); , 那么这就是一个 WScript 程序了. 双击它就能看到程序运行.(加入*.js文件的默认打开方式不变的话)

WScriptIE中运行脚本不同的地方是,你使用的是WScript对象, 而不是window/document.

另外你的权限是用户权限 , 可以访问很多资源的.

[2005-1-27 14:41:00]

嘉宾[戴立坚]: 我还想问个问题,flash的脚本将来在纯.net平台上会有影响吗

如果你的脚本是写在Flash里的,那么这个和.net没有什么直接的关系.

[2005-1-27 14:42:00]

嘉宾[戴立坚]: 脚本的艺术在于它的精巧和灵活,滥用当然会有害无利。但是使用的艺术,嘉宾是不是能分享一二

这个和经验有比较大的关系.

讲到艺术,就有点不实用的感觉.所以我平时开发是以效率为主的.

但如果我要做给别人重复使用的东西时,就要考虑到是否方便地让别人使用这个角度了.

你可以到http://www.lostinet.com/files/里下载我的ChatSolution,里面有一个rane.js文件.里面体现了我对艺术的看法.(艺术的代码总是有很多好处,而缺点就是难懂)

[2005-1-27 14:45:00]

嘉宾[戴立坚]: 迷失老大, 问你一句: abc = {} 这种结构叫什么东西呀.

{} 是对象的表达式. {} 是最简单的对象 , 等于 new Object();

[2005-1-27 14:46:00]

嘉宾[万常华]: 目前的jsvm能够实现类似java里面接口这样的功能吗? )

javascript 是一门动态语言,接口在这里意义不是非常大,JSVM 目前面临的瓶颈是性能方面,在对对象原形的判断上,jsvm2.x有了更多的考量

[2005-1-27 14:47:00]

嘉宾[戴立坚]: 请问 var a = {"aa": "aa", "bb":"bb"} 这种写法叫什么名

这个相当于

var a=new Object();

a.aa="aa";

a.bb="bb";

如果你不想分开那么多行来写,

{property1:value1,property2:value2} 这样的写法就直接很多.

[2005-1-27 14:47:00]

嘉宾[戴立坚]: 我平时在用JS时的一个担心就是JS在浏览器的兼容性问题,比如一个浏览器的不同版本,IE,Firefox.....,不知嘉宾对此有何建议?你们在实施中是如何最大保证兼容性的??

JS本身在IE与其他浏览器是一致的.不同的地方是环境的不同. 在浏览器上就是DHTML的规范不同.

我一般的做法是尽量用规范的写.例如尽量用element. setAttribute/getAttribute . 如果遇到不同的地方,就用if(isie){...}else{...} 的做法. 对于一些"downlevel"的浏览器,那就只好说"不支持".

csdn上的javascript版上有关于这个的细节的讨论.

[2005-1-27 14:49:00]

嘉宾[万常华]: JavaScript在长角里的展望?有前途吗???? )

我们不能指望一门计算机语言有太长的生命周期,重要的编程思想。

[2005-1-27 14:49:00]

嘉宾[戴立坚]: 在非IE浏览器里比如说 firefox 里如何实现 XmlDom

这个是用 document.implementation.createDocument("", " null); 来得到一个XmlDocument

[2005-1-27 14:51:00]

嘉宾[戴立坚]: 问一句老大, iframe 里使用 top.screenTop 取到的值不准确问题有没有解决呀. 而取 parent.screenTop 却是正确的

这个我没有测试过. 如果你的经验是正确的,那么这是一个IEBUG.

但你可以考虑使用top.screenTop,然后计算各framewindow.topheight来计算出准确的值.

[2005-1-27 14:52:00]

嘉宾[万常华]: 问一句老大, iframe 里使用 top.screenTop 取到的值不准确问题有没有解决呀. 而取 parent.screenTop 却是正确的

你这个问题不在javascript范畴内,属于dhtml的内容。还有很多诸如此类的问题,我建议去找 Web WorkShop 参考看看。(INET.CHM

[2005-1-27 14:53:00]

[刘如鸿]: 除了smartclient ,有没有.NET后台的RIA应用?

RIA准确的说是具备网络访问能力的终端的表现层架构,请注意我提到了终端和表现层这两个概念,因此在后台去说RIA是没有意义的,关于RIASmart Client,大家可以看我的blog:http://blog.csdn.net/liuruhong/archive/2005/01/10/247110.aspx,《程序员》杂志2005年第二期也作了技术专题

[2005-1-27 14:53:00]

[刘如鸿]: 动态脚本语言在RIA上应用好像很多,嘉宾看好哪个?

比较典型的可能是Bindows了,我记得我写过一个评论,就我个人,不是那么看好,http://blog.csdn.net/liuruhong/archive/2004/05/07/664.aspx

[2005-1-27 14:54:00]

嘉宾[戴立坚]: 现在flash的脚本越来越接近jscript了,我还想问个问题,flash的脚本将来在纯.net平台上会有影响吗

不是很明白 . 你可以考虑 flash中的js dotnetjs "应用" 是两回事就OK. 需要flash就写flash的脚本 ,需要dotnet就写dotnet的脚本. 除非flash打算支持dotnet,否则这没有关系的.

[2005-1-27 14:55:00]

嘉宾[万常华]: 动态脚本语言在RIA上应用好像很多,嘉宾看好哪个?

RIA的应用接下来会越来越多,我们目前需要的是制定一个企业标准来规范这一块的开发。还必须有一个语法层面上与业务无关的框架

[2005-1-27 14:55:00]

[刘如鸿]:

大家有什么问题可以提交给futruelight,他会负责提交给嘉宾

[2005-1-27 14:59:00]

嘉宾[戴立坚]: JS里对长度超过千的数组遍历有何好的建议?? 甚至数组长度更大的

如果真的有那样的数组,那么当然写法上要注意点.

例如最好是 var arr=obj1.Property1.TheArrays; var len=arr.lengh; for(var i=0;i<LEN;I++)

{

var item=arr[i];

//...

}

如果写成

for(var i=0;i<OBJ1.PROPERTY1.THEARRAYS.LENGTH;I++)

{

if(obj1.Property1.TheArrays[i]!=null)

{

res+=obj1.Property1.TheArrays[i]

}

}

这样的写法性能就很低了。

[2005-1-27 15:00:00]

嘉宾[万常华]: JS里对长度超过千的数组遍历有何好的建议?? 甚至数组长度更大的

如果数组过大,我考虑是不是放弃用数组,例如用 Scripting.Dictionary 来实现查找某个对象 的方式来解决

[2005-1-27 15:00:00]

嘉宾[戴立坚]: 其实我的意思是flash的脚本不改变的话在新的.net平台js上会有影响吗?

同上.

[2005-1-27 15:00:00]

[刘如鸿]:

我想问两位嘉宾,是否考虑过脚本方面的垃圾回收,就我的了解,JScript目前做的不是特别好?但是在应对大对象的情况下,应该怎么考虑?

[2005-1-27 15:03:00]

嘉宾[戴立坚]: 有个问题不知当问不当问 window.open 的返回值 和弹出的窗口的window不相等是为什么

这个没有遇到过,也无法分析原因 也许在社区里提问会有其他人有那样的经验。

[2005-1-27 15:05:00]

嘉宾[万常华]: 有个问题不知当问不当问 window.open 的返回值 和弹出的窗口的window不相等是为什么

在我看来,他们是相等的,不知你当时的测试场景是什么情况。

[2005-1-27 15:06:00]

嘉宾[戴立坚]: 脚本方面的垃圾回收

MICROSOFT的这个的确做得不好。主要问题是因为JScriptDHTML都是基于COM的。COM在这个的处理上有缺陷。

我通常遇到的问题是HTML ELEMENT事件的关联,如果没有释放,那么内存就不会释放。如果主动detachEvent,那样就没有问题了。

[2005-1-27 15:07:00]

嘉宾[万常华]: 请问现在有很多软件,都想全部使用javascript实现,你认为现在到了这个时候了吗!现在的软件业可以都拖到web上来吗?

不是任何应用都适合搬到web上来的。javascript 的功能依赖于 dom 库。

[2005-1-27 15:07:00]

[刘如鸿]: 问一句, JS还能活多久, MS smart client 出来之后JS是否还有位置?

任何一个语言的存在都是有其意义的,是因为需要所以语言会产生和流行,Smart Client只是一个理念,表现层架构的一种提法,他们之间本身并没有太多的冲突,我想他能够活很长时间

[2005-1-27 15:09:00]

嘉宾[戴立坚]: 能请嘉宾朋友谈一下JavaScript中所谓的艺术吗?

我眼中的艺术分:

1。用很短的代码实现较多的功能。这样的代码往往都有艺术气息。

2。写出来的代码容易被使用,那样需要在代码上下很大的功夫,这也很艺术

所以我的观点时,如果代码经过不断地改进,达到越来越好,那么这个就是艺术了。 例如JSVM,Bindows就是艺术

[2005-1-27 15:09:00]

嘉宾[万常华]: 能请嘉宾朋友谈一下JavaScript中所谓的艺术吗?

我认为,如果在js的设计思想符合美学特征,那就是一种艺术了!

[2005-1-27 15:10:00]

嘉宾[戴立坚]: jscript.net微软会给它装混乱器吗?

JScript.Net会编译成 DotNet dll 的。 所以使用 DotNet 的混淆器就OK了。

[2005-1-27 15:10:00]

[刘如鸿]: jscript.net微软会给它装混乱器吗?

JScript.NET目前是编译性语言,和C#,VB.NET同等的,所以所谓的混淆是没有意义的e

[2005-1-27 15:10:00]

嘉宾[戴立坚]: 所谓脚本都是在客户端运行的代码,那么对于一些关键性的脚本代码,如何保证其不备浏览者看到呢?

很多服务器都应用脚本技术。例如ASPVBScript/JScript来写。

如果要运行在客户端,那么做法可以是:

1。尽量不要让客户端的人得到JS的代码。例如屏蔽右键是基本的,有很多人想出各种方法的目的是为了这个。

2。是保护JS的思想,尽量另代码变得难读。这样即使得到代码,也很难被阅读和修改。

[2005-1-27 15:12:00]

嘉宾[万常华]: 所谓脚本都是在客户端运行的代码,那么对于一些关键性的脚本代码,如何保证其不备浏览者看到呢?

这是 javascript 中目前难以解决的问题。当初设计者包括现在的解释器提供商都没有考虑这个问题,这是把js作为一个脚本语言的定位决定的

[2005-1-27 15:12:00]

嘉宾[刘如鸿]: jscript.net微软会给它装混乱器吗?

因为微软提供的混淆器或者说编码器是在源代码层次上考虑的,如果已经编译成MSIL,那么之后的混淆是其他工具去处理的

[2005-1-27 15:13:00]

[刘如鸿]: JScript.Net和现在的JScript有什么不同???

最简单的解释,JScript.NET必须在.NET上运行,而JScript可以在浏览器运行

[2005-1-27 15:13:00]

嘉宾[戴立坚]: js 是否可以摆脱浏览器的框框? 我知道用 window.createPopup();可以模拟一下,但是如果它的父页面如果关闭, 它也会跟着关闭? 有没有什么更好的办法呢?

如果脚本是运行在浏览器中的,那么就要受浏览器的限制。

这个是具体浏览器的开发问题了。如果技术上无法实现,那就看出浏览器的公司愿意不愿意提供这个功能了。

[2005-1-27 15:14:00]

嘉宾[万常华]: js提供错误处理功能了吗?就像java中的exception

提供了,但功能比较弱,我们做一些封装,可以大致上实现java异常的处理机制。

[2005-1-27 15:14:00]

嘉宾[戴立坚]: 请问现在有很多软件,都想全部使用javascript实现,你认为现在到了这个时候了吗!现在的软件业可以都拖到web上来吗?

我认为现在是属于研发和初试阶段。

这个要看浏览器的生命力了。如果以后有东西会取代浏览器,那么基于浏览器的JS应用也会慢慢灭亡。

但是现在看来程序越来越基于浏览器了。所以我对这个方向很看好的。

但是以后也有可能有更多的编程方式。例如IEHOST DotNet的程序,如果这个得到大的发展,那么脚本应用会受打击。

[2005-1-27 15:17:00]

[刘如鸿]: 请问现在有很多软件,都想全部使用javascript实现,你认为现在到了这个时候了吗!现在的软件业可以都拖到web上来吗?

everything in web是一件很愚蠢的事情,我想任何平台都有自己擅长的问题域,不然就没有存在的价值,有些应用使用Web是合适的,有些应用并不是合适,所以现在有人提出了“The Return of Rich Client”的论调,某种角度来说,也就是对于目前Web过热的反思

[2005-1-27 15:17:00]

嘉宾[万常华]: 我想知道javascript到底可以干什么 或者说它到底可以发展到什么地步

javascript 目前主要是一门控制语言,没有基本的IO操作定义,除了本身的计算功能以外,其他的都要借助于容器中提供的控件来实现。

[2005-1-27 15:18:00]

嘉宾[戴立坚]: JavaScript有没有好一点的调试器,我每次都是使用alert()的方法来调试的!

可以用vs.net来调试js

不过我自己也是经常用alert

另外拦截window.onerror也是好方案。

IE中。能够得到 window.onerror.caller 的。这样能够得到一个JSStackTrace(调用的函数顺序表),这对调试很有帮助。

[2005-1-27 15:19:00]

[刘如鸿]: 目前国内有没有像Bindows这样规模的JS开源项目,想了解一下

王常华的JSVM就是一个这样的框架,你可以在www.51js.com上得到更多的信息

[2005-1-27 15:19:00]

嘉宾[戴立坚]: 请推荐几个javascript 的调试工具,谢谢

首推选 vs.net vs.net里的调试里的关联进程,选上ScriptOK了。

[2005-1-27 15:20:00]

嘉宾[万常华]: 目前国内有没有像Bindows这样规模的JS开源项目,想了解一下

据我所知,类似bindows关注于web UI 方面的项目国内就有几个,但目前没有开源。

[2005-1-27 15:21:00]

[刘如鸿]:

大家有问题尽快提交给futurelight,聊天活动剩下10分钟结束

[2005-1-27 15:21:00]

嘉宾[戴立坚]: 问一句, 如何在IE里也实现 watch() ? watchNS里是被支持的

我没有接触过 NS 中的 watch() 不如说说 watch 是做什么的?然后看看在IE中怎样实现同样的功能?

[2005-1-27 15:21:00]

嘉宾[万常华]: 一个良好的组织结构和规范这样的规范应该从哪些方面考虑的? )

前面已经回答

[2005-1-27 15:23:00]

嘉宾[戴立坚]: 刚才玩WALLOP突然想起一个问题来~~跟梅花雪的问题类似。FLEX这样的技术出现会对JS产生什么样的影响。

就好像饭与面包的感觉。

如果某一天大家都认为面包好吃了,那么就没有人吃饭了。

所以饭和面包都要努力呵呵。

FLEX相当于新的技术和应用。但是具体能不能代替JS的应用,具体是看他们的优点缺点和开发人员的选择了。

[2005-1-27 15:23:00]

嘉宾[戴立坚]: 能不能说明一下如何拦截window.onerror,这个方法没有用过!

例如 window.onerror=function(msg,file,line){ alert(msg); return true ;}

[2005-1-27 15:24:00]

嘉宾[戴立坚]: 请问:为什么没有组织,专门做一些控件!,来统一各浏览器的差距!

其实是有一些这样的代码的。

例如很多人使用 HTMLElement.prototype.__defineGetter__("outerHTML",..)的方法来统一这些应用。

Bindows在在另外的模式上去屏蔽浏览器的细节。

不过这是艰巨的工作,还要看各浏览器的制造商的脸色。。

[2005-1-27 15:26:00]

嘉宾[万常华]: 能不能说明一下如何拦截window.onerror,这个方法没有用过!

为什么要拦截呢? 既然有异常,我们或者处理,或者向上层容器抛。

我主张js 开发中应多用

try{

} catch(){}

如果非要忽略,可以通过 window.onerror = function(){return false}

来实现

[2005-1-27 15:27:00]

嘉宾[戴立坚]: 我觉得对于不同浏览器还是针对每个浏览器作一套方案的比较好,而不是写很长很长的脚本去适应他们

那样也有缺点的。我曾经试过这样做。 但是当需要修改代码时,两边同时改,同时测试,所费的时间更多。

[2005-1-27 15:29:00]

嘉宾[万常华]: 请问脚本会不会,被各种组织的框架给挤掉!

脚本自己也可以有框架啊

[2005-1-27 15:30:00]

嘉宾[万常华]: 请问在JS里面能否抛出一个自定义的错误,就像VBS里面的Err.Raise一样?

可以 throw new Error(errNum,errDescription);

[2005-1-27 15:31:00]

嘉宾[刘如鸿]: HTC是否只有IE支持?

是的,HTCIE自己的扩展,Mozilla也有类似的东西,就是XUL

[2005-1-27 15:31:00]

[刘如鸿]: 使用javascript编写游戏,是否有前途?

有人这么做了,有没有前途我不敢说

[2005-1-27 15:31:00]

嘉宾[戴立坚]: 使用javascript编写游戏,是否有前途?

我觉得,如果没有人与你竞争,那就是有前途的。

否则用JS写大型的程序会很费时间。

[2005-1-27 15:32:00]

嘉宾[戴立坚]: 即使你写兼容的脚本,也是一样要改两个地方,只是要改的地方少一些:)

是的。但是这样会不容易出错误。

我以前经常犯的错误是,把代码从一边复制到另外一边,总是忘记修改一些细节。

[2005-1-27 15:33:00]

嘉宾[万常华]: 不再try {}catch()块里面 throw语句有效嘛?

有效,如果执行域中没有catch的话将被抛至顶容器,即 window 对象。

[2005-1-27 15:34:00]

嘉宾[刘如鸿]:

感谢大家的积极参与,聊天活动到此结束,如果大家有任何问题,可以通过Email和我们的嘉宾联系,他们的联系方式可以在个人介绍中找

[2005-1-27 15:33:00]

[刘如鸿]:

msdn开发精选》将一如既往地为您呈现精彩的技术聊天,如果大家对于杂志和我们的活动有什么意见和建议,欢迎和我联系,我的email:liurh@csdn.net,再一次谢谢大家的参与

[2005-1-27 15:34:00]

发表于 @ 2005年02月25日 14:08:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:教育中多媒体设备使用随感 | 新一篇:注重细节,走可持续发展之路

  • 发表评论
  • 评论内容:
  •  
Copyright © flytosea8
Powered by CSDN Blog