编译为JavaScript:不兼容性的另类解决方案
JavaScript很常用,但也因为其不兼容性很令人头疼。一个另类的解
决方法就是,将其他语言编译为JavaScript。本文列举了GWT、Smalltalk、Python等语言将JavaScript做为编译目标的情
况。
搞过Web开发的都或多或少摸过JavaScript,而尽管Javascript无处不在,但还是很难让人喜欢它。在类似
Google V8、Apple/WebKit的Nitro/SquirrelFish
Extreme和Firefox的TraceMonkey这样的VM出现之前,Javascript的性能并不理想。多个浏览器间互不兼容的实现也
让开发十分痛苦
。jQuery和其他一些类库提供了方便好用的抽象,可以用同一种API进行编程,甚至消除不兼容性。
另一种解决方法:编译为JavaScript
解决该问题的另一种方法是彻底隐藏Javascript,将其作为编译目标。Google的GWT就是一个很成熟的例子,它接受Java代码(用
Java API的一个子集写的),并将它编译为针对浏览器的Javascript。现实中GWT的真实案例之一就是Google
Wave客户端。最近,一些其他语言的实现也加入了这一行列。
Avi Bryant,Smalltalk Seaside
Web框架的作者,开发了Clamato,这是一种能编译为常见Javascript的Smalltalk方言。Avi在FutureRuby时
InfoQ对他的采访中描述了Clamato的设计原则。
Clamato的指南页面允许你在浏览器中打开一个Clamato(Smalltalk)类浏览器,查看并编辑Clamato源代码。要查找类的
话,就使用类浏览器左上角的文本框。比较有意思的是那个自托管的基于PEG的Clamato解析器(在文本框中键入“PP”可以看到解析器和各种组合程序
的类)。从Seaside风格的HTML构造器(Clamato浏览器中的HTMLCanvas类)中我们可以看到Seaside的影子。可视化组件能用
它来构造GUI,例如,指南中的计数器组件:
renderOn: html
html h3 with:
@counter
.
html button
with:
'+'
;
onClick: [
@counter
:=
@counter
+ 1.
self
reload].
html button
with:
'-'
;
onClick: [
@counter
:=
@counter
- 1.
self
reload].
renderOn:
html这一行定义了一个新的方法,范例的其他部分是方法体,它
相关文档:
Although the days of long and tedious code branches to target specific browsers in JavaScript are over, once in a while it's still necessary to do some simple code branching and object detection to ensure that a certain piece of code is working properly on a user's machine.
In this article, I ......
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)> <td>no </table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="return false;" oncut="re ......
document对象:
对象属性:
document.alinkColor
//激活链接(焦点在此链接上)的颜色
document.all
//表示文档中所有HTML标记符的数组
document.anchors
//表示文档中所有锚的数组,锚是指带有name属性的A对象
document.applets
//表示文档中所有java小应用程序
document.b ......
在web开发过程中,经常会出现因为客户端的某些软件版本问题,而导致种种问题。这来天就因为Media Player版本的问题,引发了一个不大不小的问题。在调用Media Player播放视频的时候,Media Player9竟然播放不了 ... ...
不多说了,还是贴代码吧!
<html xmlns="h ......
一般事件
事件浏览器支持描述
onClick
HTML: 2 | 3 | 3.2 | 4
Browser: IE3 | N2 | O3
鼠标点击事件,多用在某个对象控制的范围内的鼠标点击
onDblClick
HTML: 2 | 3 | 3.2 | 4
Browser: IE4 |&nb ......