javascript的渐进增强与平稳退化浅谈


Posted in Javascript onNovember 12, 2013

在google.com.hk的左上角,有一个更多的链接,它具有一个目标地址,但是当我们点击时,大多数情况发现的是弹出一个下拉列表供用户选择(这是一种典型的渐进增强形式)。怎么理解?——如果用户的浏览器支持javascript,那么就可以享受到这种快速导航的服务功能。

现在,请你禁用的你的浏览器的javascript功能(不会禁用猛击这里),再次访问google.com.hk,再次点击更多时,发生了什么?是的,没有看到下拉列表,而打开了一个新页面。(这是一种典型的平稳退化)。怎么理解?——如果用户的浏览器不支持javascript,用户仍然能够访问我的网站。

如何实现类似google的这一功能?

<script type="text/javascript">
 function displayMenu() {
    //显示导航列表;
 }
 </script>
 <a href="目标页面" onclick="displayMenu(); return false;">更多»</a>

解释:displayMenu()是一个显示导航列表的功能函数(这里省略它的实现,因为讨论的并不是这个)
onclick指定了链接的点击事件。
return false : 取消了浏览器的默认行为(这样就执行了displayMenu(),而不发生页面的跳转了),这个不可省略(当然你可省略试试看,有助于你的理解)

现在我们来看:如果你的浏览器支持javascript时,那么onclick后的代码肯定会被执行。否则,onclick后的代码不会被执行,那就会发生页面的跳转。这样不管是否支持javascript,用户都能顺利的访问我的网站。

下面是另一个类似的例子,它在新窗口中打开一个链接,但是我们并没有指定target,如果用户的浏览器不支持javascript,它将在当前页面中打开链接,如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>在新窗口打开链接的另一种方式</title>
<script type="text/javascript">
function popup(url) { window.open(url); }
</script>
</head>
<body>
<ul>
    <li><a href="http://www.baidu.com/" onclick="popup(this.href); return false;">百度</a></li>
    <li><a href="http://www.google.com.hk/" onclick="popup(this.href); return false;">google</a></li>
</ul>
</body>
</html>
Javascript 相关文章推荐
JavaScript 特殊字符
Apr 05 Javascript
基于jQuery的图片左右无缝滚动插件
May 23 Javascript
js中window.open()的所有参数详细解析
Jan 09 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
Dec 25 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
Aug 11 Javascript
js基础之DOM中元素对象的属性方法详解
Oct 28 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
element ui table 增加筛选的方法示例
Nov 02 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 #Javascript
JavaScript中的字符串操作详解
Nov 12 #Javascript
JavaScript简单实现网页回到顶部功能
Nov 12 #Javascript
判定是否原生方法的JS代码
Nov 12 #Javascript
给文字加上着重号的JS代码
Nov 12 #Javascript
深入理解javascript动态插入技术
Nov 12 #Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 #Javascript
You might like
php addslashes和mysql_real_escape_string
2010/01/24 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
ext jquery 简单比较
2010/04/07 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
javascript常用方法总结
2015/05/14 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
python实现的简单RPG游戏流程实例
2015/06/28 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python控制多进程与多线程并发数总结
2016/10/26 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
制药工程专业职业生涯规划范文
2014/03/10 职场文书
团购业务员岗位职责
2014/03/15 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Nginx的gzip相关介绍
2022/05/11 Servers