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

  在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>