javascript 特征侦测技术
这种新式的技术最先由jQuery搞出来的,接着Prototype与mootools都支持了。这技术兴起的原因是浏览器嗅探技术是不太可靠,如UserAgent很容易被伪造,如IE8的UserAgent就把许多浏览器的关键字包含进去,造成辩识困难。其他一些重要辩识手段,由于浏览器厂商对旧版本的升级与不断推进新版本,许多都无效了。由于浏览器种类越来越多,版本也越来越多,看看Ext的核心文件吧,真是有耐性,连火狐与苹果的各个版本都列出来,这东西会没有止境地膨胀,为此特征侦测技术应运而生。这东西只要是用来侦测浏览器工厂自作聪明添加的一些特征,不用说,首当其冲是IE,如自动为table添加tbody,自动为innerHTML去除空白,自动为href属性补全路径……虽然有的的确很有用,如为table添加tbody能加快读写速度,但标准浏览器不这样做,于是麻烦又来了……
innerHTML去除空白特性。按理讲,innerHTML是IE搞出来的,其他浏览器应该完全按照IE的模式渲染才对不起,但它们总要搞出一点特殊来。不过,IE的innerHTML的确有不妥的地方。按微软的思路,innerHTML是用来大规模生成DOM元素,如果有一些空白不是包围在标签之内,将会被忽略掉。这是很细心的处理。但标准浏览器则认为innerHTML生成的是页面的一部分,空白也是,因此空白不会被忽略的。注意运行框的结果,1代表元素节点,3是文本节点,空白也是文本节点的一种。这种特征,jQuery称之为leadingWhitespace。
<!doctype html>
<html dir="ltr" lang="zh-CN">
<head>
<meta charset="utf-8"/>
<title>特征侦测技术 By 司徒正美</title>
<script type="text/javascript">
window.onload = function(){
var p = document.getElementById("p");
p.innerHTML = " <span>你好!</span>"
alert(p.firstChild.nodeType);
}
</script>
</head>
<body>
<p id="p"></p>
</body>
</html>
运行代码
table自动插入tbody。在表格布局的年代,这特征非常受用的。因为如果没有tbody,table会在浏览器解析到闭合标签时才显示出来,如果起始标签与闭合标签相隔很完,换言之,这表格很大很长,用户会看什么也看不到。但有了tbody分段识别和显示,避免了页面长时间一片空白然后突然一下子内容全部出来的局面。不过,这只因为IE渲染速度太慢的缘故,
相关文档:
Chrome、IE和Firefox都纷纷在新版中增强了JavaScript引擎的执行效率,随着JavaScript效率在各大浏览器的显著提高,JavaScript可以做越来越多的事,本地文件API的引入将让很多有趣的功能成为现实。
日前,Mozilla向W3C提交了一个草案,旨在推出一个JavaScript API,让JavaScript 脚本直接操作本地文件,Firefox的最新浏 ......
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 ......
43、JavaScript主页弹出窗口技巧
窗口中间弹出
<script>
window.open("http://www.cctv.com","","width=400,height=240,top="+(screen.availHeight-240)/2+",left="+(screen.availWidth-400)/2);
</script>
============
<html>
<head>
<script language="LiveScript">
fu ......
//添加按钮定义中的按钮
function addBtnRow() {
var table = document.getElementById('btnList');
var rownum = table.rows.length;
&nbs ......