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 相关文章推荐
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
Oct 21 Javascript
node.js利用redis数据库缓存数据的方法
Mar 01 Javascript
Vue.js教程之axios与网络传输的学习实践
Apr 29 Javascript
关于vue.js v-bind 的一些理解和思考
Jun 06 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
简述vue中的config配置
Jan 23 Javascript
Express本地测试HTTPS的示例代码
Jun 06 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
Websocket 向指定用户发消息的方法
Jan 09 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP重定向与伪静态区别
2017/02/19 PHP
js+css在交互上的应用
2010/07/18 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
angular内置provider之$compileProvider详解
2017/09/27 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
python网页请求urllib2模块简单封装代码
2014/02/07 Python
Python通过future处理并发问题
2017/10/17 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
python调用百度API实现人脸识别
2020/11/17 Python
中学生获奖感言
2014/02/04 职场文书
绩效管理实施方案
2014/03/19 职场文书
解放思想演讲稿
2014/09/11 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
JavaScript 数组去重详解
2021/09/15 Javascript