你所要知道JS(DHTML)中的一些技巧


Posted in Javascript onJanuary 09, 2007

这些天都没有更新日志了,这篇文章就也算是自己的一些经验谈了。简单的说一些技巧给大家,希望对你有所帮助,如果还有疑问,可以在下边留言。

一、全等运算符 
在JS中,不为0的数皆为true,除了几个特殊的变量除外。比如:undefined,null,""等。这在大多数情况下,也是我们所期望的。
但你不应该忽略这个全等运算符。因此需要较为严格的效验下,我们可以用===这个全等运算符,看下面的代码:
//平常的一些效验
var foo = function(arg) {
  if (!arg) {
    alert("normal false");
  } else { alert("true"); }
}
foo(null); //false
foo(false); //false
foo(""); //false
foo("never-online"); //true
//全等效验
var foo = function(arg) {
  if (arg===false) {
    alert("false");
  } else { alert("not a false variable") }
}
foo(null); //not a false variable
foo(false); //false
foo(""); //not a false variable
foo("never-online"); //not a false variable

二、变量的应用之一——去除网页嵌套
例如,你要把baidu.com嵌入你自己的一个iframe里,得到的结果却不是你想要的,因为它有这么一句代码
if(self!=top){top.location=self.location;}
这句代码的意思是:如果网页有嵌套的话(也就是用了frame技术的话,将去除嵌套,并把该frame里的url给到顶层窗口)
这是个令人头痛的问题,比如,在一些免费空间中也使用了上面的这句代码。如果去除呢?用这一句代码就可去除嵌套:
<script>
var location='never-online';
</script>
下面来说明用了这句代码为什么可以去除嵌套:
我们知道,JS变量中,假如变量是这样
 <script type="text/javascript">
 //<![CDATA[
    myVar = "never-online";
    (function () {
      //var myVar;
      alert(myVar)
    })()
 //]]>
 </script>
是可以显示"never-online"这个字符串的。而当你把//var myVar这句还原时(也就是不注释掉它时)结果就不一样了,将显示undefined。我们用var location="never-online"时也是一样的道理,以下的代码也许将会为你解疑。
 <script type="text/javascript">
 //<![CDATA[
    alert(location);
    //var location;
 //]]>
 </script>
同样,第二次运行时,把var location这句还原,比较一下就应该明白原因了。同理,window,document都是如此。有兴趣你就可以试试。

三、得到当前页的路径
要达到这个目的,方法有很多种,比如利用location对象,但我这里举的例是用创建的一个IMG标签。看代码:
 <script type="text/javascript">
 //<![CDATA[
    var p = document.createElement("IMG");
    p.src="."; alert(p.src);
 //]]>
 </script>
我们所知道的,"."在路径中表示的是当前文件夹。因此,用IMG来取得路径在某些情况下,可以较快的得到路径。

四、用!!运算符得到一个变量的boolean值,在某种程度上说,就是相当于强制转型
比如
 <script type="text/javascript">
 //<![CDATA[
    var isSupportedXMLHttp = !!new ActiveXObject("MSXML2.XMLHTTP");
    alert(isSupportedXMLHttp)
 //]]>
 </script>
为什么会这样,我们可以从技巧一中可以得知答案。这里不再重复。

五、条件编译。
如果你觉得有必要的话,可以使用此方法。这和一些强语言里的条件编译类似。很多情况下用于——兼容。
这里只是简单的提一下,如果你有兴趣,可以参看MSDN,或者看一些JS条件编译的文章。
只需要几个语法:
@cc_on - 这句在条件编译中是必写的,表示激活条件编译
@set @varname = term - 这句是赋值的
下面这里就是判断的了
@if
@else
@end
简单的例子:
/*@cc_on
document.write("JScript 版本: " + @_jscript_version + ".<br>");
 /*@if (@_jscript_version >= 5)
 document.write("JScript 版本 5.0+.<br \/>");
 document.write("只有当浏览器支持JScript5+的时候你才能看到这些文字.<br>");
 @else @*/
 document.write("当你使用其他浏览器(比如: Firefox, IE 4.x 之类)的时候看到这行文字<br>");
 /*@end
@*/

六、其它的,现在一下想不到那么多,暂时先写到这吧 

Javascript 相关文章推荐
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
Feb 09 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
javascript jq 弹出层实例
Aug 25 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
Sep 12 Javascript
老生常谈JQuery data方法的使用
Sep 09 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
详解node nvm进行node多版本管理
Oct 21 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
Jan 10 Javascript
vue2.0+koa2+mongodb实现注册登录
Apr 10 Javascript
layui实现显示数据表格、搜索和修改功能示例
Jun 03 Javascript
如何让vue长列表快速加载
Mar 29 Vue.js
sina的lightbox效果。
Jan 09 #Javascript
JS中简单的实现像C#中using功能(有源码下载)
Jan 09 #Javascript
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
Jan 09 #Javascript
兼容Mozilla必须知道的知识。
Jan 09 #Javascript
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
Jan 09 #Javascript
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 #Javascript
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 #Javascript
You might like
Smarty模板快速入门
2007/01/04 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
python中的闭包函数
2018/02/09 Python
python中利用zfill方法自动给数字前面补0
2018/04/10 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
存储过程和sql语句的优缺点
2014/07/02 面试题
如何利用cmp命令比较文件
2016/04/11 面试题
财政局长自荐信范文
2013/12/22 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
欢度春节标语
2014/07/01 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript