// Best Practice:Use Native XHR, if available
if (window.XMLHttpRequest) {
// If IE7+, Gecko, WebKit:Use native object
var xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
// ...if not, try the ActiveX control
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
// No XMLHTTPRequest mechanism is available.
}
使用这个代码示例,站点只有在万不得已的情况下才需要实例化 ActiveX 控件。站点可以尽可能地利用本机对象,确保其功能不会受到 ActiveX 筛选的不必要影响。
许多出现过这种行为的 Web 站点都曾使用旧版本的 JQuery,使用上述不良模式来实例化 XMLHttpRequest 对象。最新版本的 JQuery 1.5.1 已经解决了这个问题,因此我们鼓励 Web 站点开发人员更新到最新版本。
正确显示替用内容
在上文中,我们提到了在 ActiveX 筛选阻止控件时显示类型不当的替用内容可能会给用户造成的迷惑。Web 站点应该使用全新的 API 来确定站点上是否启用了 ActiveX 筛选,以便与未安装 ActiveX 控件或版本过期的情况区分开来。
如果站点确实启用了 ActiveX 筛选,我们为开发人员提供的第一条建议就是不要显示替用内容。这将允许在占位符区域内显示筛选器图标,并能提供前文所述的用户优势。
如果站点仍然希望显示一些替用内容,则可以显示一条自定义消息,告知用户必须关闭筛选才能查看内容。以下示例代码展示了如何利用新的 API 来检查 ActiveX 筛选,并在控件被阻止的情况下显示一条自定义消息:
Web 站点可以利用某些替代方法在页面上显示原始内容。例如,ActiveX 筛选 Test Drive 演示在为站点启用 ActiveX 筛选时显示 HTML5 视频格式的视频。
我们要求开发人员在检测到启用了 ActiveX 筛选时不要将用户转到另外一个 Web 页面。即使新 Web 页面不包含任何 ActiveX 控件,IE 包含的逻辑也会使得其地址栏中显示筛选器图标,而且用户在关闭筛选后还需要导航回上一个页面。如果新 Web 页面位于不同的域中,用户最终可能会为错误的域关闭 ActiveX 筛选。