打印

BT9027: 只有 IE 支持 DHTML Behaviors 及相关方法

作者:丁宗秋

标准参考

无。

问题描述

DHTML Behaviors 是 IE 特有的,其他浏览器并不支持。如果在页面中使用了这一特性,在非 IE 浏览器中将无法得到预期的结果。

造成的影响

部分功能无法实现,如非 IE 浏览器不能通过 JavaScript 代码设置浏览器的主页。

受影响的浏览器

IE6 IE7 IE8  

问题分析

DHTML Behaviors 是 IE 5.5 中引入的新功能之一。DHTML Behaviors 是指封装了特定的功能或行为的组件,当它应用到一个标准的 HTML 元素时,可以增强该元素的默认行为。

WEB 开发者可以使用 HTC 来引入 DHTML Behaviors,如通过 CSS 以 'behavior:url(xxx.htc)' 的方式向 HTML 元素添加行为。
或者使用 Element.addBehavior("xxx.htc")Element.removeBehavior("xxx.htc") 动态的为一个 HTML 元素添加或删除行为。

在 Behaviors 中有些行为被实现为 IE 浏览器的一部分,这部分的行为我们称之为默认行为

homePage 行为就是这些默认行为之一,包含了关于用户主页的相关信息。它对应用的对象提供了如下方法:

方法 描述
isHomePage 判断给定的URL地址,是否是当前客户端主页
navigateHomePage 导航到当前浏览器的主页
setHomePage 设置指定的URL为主页

我们可以通过两种方式,来应用 homePage 行为到一个元素,如下:

方式一:通过样式

<ELEMENT style="behavior:url('#default#homePage')">

方式二:通过脚本

object.style.behavior = "url('#default#homePage')"

object.addBehavior("#default#homePage")

下面请看一个使用 homePage 行为,在 IE 下实现设为首页的案例。

<a href="#" style="behavior:url(#default#homepage);" onclick="setHP(this)">设为首页</a>

<script type="text/javascript">
function setHP(o){
  try{    // For IE.
    o.setHomePage("http://xxx.xxx.xxx/");
  }
  catch(e){  // For others.
    alert("您的浏览器不支持该操作,请手动设置!");
  }
}
</script>

该代码只在 IE 下可以弹出设置首页对话框,在其他浏览器中将显示 alert 中的信息。

关于 Behaviors 的详细信息,请参考 MSDN Introduction to DHTML BehaviorsUsing DHTML Behaviors 中的内容。
关于 HTC 的详细信息,请参考 MSDN Using HTML Components to Implement DHTML Behaviors in Script 中的内容。
关于默认行为的更多信息,请参考 MSDN Default Behaviors Reference 中的内容。

解决方案

1. 避免使用 IE 的特性。

2. 必须使用时,要处理好非 IE 不支持这些特性时的情况,给出友好的提示信息。

参见

知识库

相关问题

测试环境

操作系统版本: Windows 7 Ultimate build 7600
浏览器版本: IE6
IE7
IE8
Firefox 3.6.8
Chrome 6.0.472.14 dev
Safari 5.0.1
Opera 10.60
测试页面:
本文更新时间: 2010-08-09

关键字

DHTML Behaviors HTC homePage isHomePage navigateHomePage setHomePage