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 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 18 Javascript
Jquery截取中文字符串的实现代码
Dec 22 Javascript
一个简单的js树形菜单
Dec 09 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
Sep 15 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
Jan 25 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
jQuery自定义图片上传插件实例代码
Apr 04 jQuery
vue实现登陆登出的实现示例
Sep 15 Javascript
解决koa2 ctx.render is not a function报错问题
Aug 07 Javascript
从0到1搭建Element的后台框架的方法步骤
Apr 10 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
Jan 07 Javascript
使用vuex-persistedstate本地存储vuex
Apr 29 Vue.js
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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
python多线程扫描端口示例
2014/01/16 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python登录系统界面实现详解
2019/06/25 Python
keras中的History对象用法
2020/06/19 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
经典c++面试题六
2012/01/18 面试题
《掌声》教学反思
2014/02/23 职场文书
安全生产大检查方案
2014/05/07 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
涨价通知怎么写
2015/04/23 职场文书
刑事法律意见书
2015/06/04 职场文书
在校证明模板
2015/06/17 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
python使用glob检索文件的操作
2021/05/20 Python
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
mysql sql常用语句大全
2022/06/21 MySQL