文章关键字 ‘JavaScript’

使用正确版本的XMLHTTP

2011年03月17日,星期四

说起XMLHTTP,相信你一定不会陌生,当前大红大紫的AJAX技术的核心所在。我在这里不讨论AJAX,也不讨论JavaScript,而是讨论VBScript。

我枚举了一下,在我的系统(Windows7)中,以下ProgID都可以创建XMLHTTP对象:

Microsoft.XMLHTTP
Microsoft.XMLHTTP.1.0
Msxml2.ServerXMLHTTP
Msxml2.ServerXMLHTTP.3.0
Msxml2.ServerXMLHTTP.4.0
Msxml2.ServerXMLHTTP.5.0
Msxml2.ServerXMLHTTP.6.0
Msxml2.XMLHTTP
Msxml2.XMLHTTP.3.0
Msxml2.XMLHTTP.4.0
Msxml2.XMLHTTP.5.0
Msxml2.XMLHTTP.6.0

不同的版本有什么区别呢?Google告诉你答案:

(更多…)

各浏览器禁止内容选中的方式

2010年12月2日,星期四

今天在Linkanyway博客看到《Javascript之禁止右键禁止选取》,高手都喜欢装菜鸟。

禁用右键确实没什么难度,虽然oncontextmenu事件是HTML5里面的,但是现在主流的浏览器都支持。

<script type="text/javascript">
document.oncontextmenu = function(e) {
    return false;
}
</script>

禁止内容选中相对就比较复杂了,标准中没有定义,各浏览器对禁止内容选中,各有各自的办法:

  • Firefox Chrome Safari都有私有CSS样式控制
  • IE通过标签属性和标签方法控制
  • Opera通过标签属性控制

至于具体代码,请查看参考链接。

参考链接:BX2050: 各浏览器禁止内容选中的方式不同

火狐(FireFox)中的onkeydown事件

2010年11月27日,星期六

昨天在Kaisir.Wang的文章里留言,我在输入C++的大写字母C时习惯性的按下了Shift+c,竟然弹出了个Hello World窗口。按照他的回复,这是他博客里的彩蛋。汗,一点也不好玩。

然后我把那段JavaScript代码找出来了,如下:

document.onkeydown=onkey;
function onkey(){
    if ((event.shiftKey)&&(event.keyCode==67))
    alert("Hello World!");
}

他后面又回复说这代码在火狐下无效,于是我Google了一下,原来是因为onkeydown事件在IE和FireFox的实现不一样。

Browser differences: Internet Explorer uses event.keyCode to retrieve the character that was pressed and Netscape/Firefox/Opera uses event.which.

IE用event.keyCode返回按下的按键,而Netscape/Firefox/Opera用的是event.which。

原因已找到,把代码稍微修改一下:

document.onkeydown = function(e) {
    e = e ? e : window.event;
    var keyCode = e.which ? e.which : e.keyCode;
    if(e.shiftKey && keyCode == 67)
        alert("Hello World!");
}

我还专门装了个FireFox测试,通过。

参考链接:onkeypress Event

JavaScript中的闭包(closures)

2010年11月6日,星期六

今天有个不明真相的同学跟我说JavaScript很简单,我顿时感到压力很大。曾经我也是这么认为的,直到有一天无意中看了一下JQuery的源码,才发现我根本不懂JavaScript。正如《说说掌握JavaScript语言的思想前提》里所说:

大部分人对JavaScript的高级应用不甚了解,已有的知识架构里会认为JavaScript仅仅是一门脚本语言,其作用是给页面做一些锦上添花的效果,比如表单验证等等。潜意识里也就不会用面向对象的思想去编写JavaScript代码,也很少会去深入了解prototype, context, scope chains, closures等概念。

任何一门语言,无论它多么简单,都不是一天两天就能掌握的,无论是VBScript,还是JavaScript,抑或是其他。才学了几天就说JavaScript很简单,这只能显得你很肤浅。懂得基本的语法,并不等于懂得这门语言。

《JavaScript The Definitive Guide, 5th Edition》里有段话:

Closures are an interesting and powerful technique. Although they are not commonly used in day-to-day JavaScript programming, it is still worth working to understand them. If you understand closures, you understand the scope chain and function call objects, and can truly call yourself an advanced JavaScript programmer.

闭包是一种有趣而强大的技术。虽然它们在日常的JavaScript编程中不经常使用,但是依然值得你去了解它们。如果你理解了闭包、作用域链和函数的call对象,那么你就可以真正自称为高级JavaScript程序员了。

(更多…)

JavaScript调用VBS中的InputBox和MsgBox函数

2010年10月30日,星期六

严格的是应该是JScript,不过很多不明真相的同学不区分JavaScript和JScript,于是标题就写JavaScript了。JScript和VBScript相互调用搞来搞去都是ScriptControl,一点技术含量也没有。

JavaScript版MsgBox函数,后面两个参数忽略掉,用了那么久VBS我从来没有用过MsgBox最后两个参数。

(更多…)