微调您的 Web 站点以适应 Windows XP Service Pack 2

发布日期: 8/18/2004 | 更新日期: 8/18/2004

Microsoft Corporation

适用于:
Microsoft Active X controls
Microsoft Internet Explorer
Microsoft Outlook Express
Microsoft Windows XP Service Pack 2 (SP2)

摘要:使您的 Web 站点能够很好地使用 Windows XP SP2 中的新安全功能,这些功能可能会影响 ActiveX 控件、文件下载、弹出窗口等。

*
本页内容
您的 Web 站点是否使用 Microsoft ActiveX 控件? 您的 Web 站点是否使用 Microsoft ActiveX 控件?
您的 Web 站点是否允许用户下载文件? 您的 Web 站点是否允许用户下载文件?
您的 Web 站点是否使用弹出窗口? 您的 Web 站点是否使用弹出窗口?
您的 Web 站点是否依赖于 Microsoft Java 虚拟机 (MSJVM)? 您的 Web 站点是否依赖于 Microsoft Java 虚拟机 (MSJVM)?
浏览器窗口限制 浏览器窗口限制
常用技巧 常用技巧

您的 Web 站点是否使用 Microsoft ActiveX 控件?

在 Windows XP Service Pack 2 (SP2) 中,ActiveX 控件的模式安装提示最初由“信息栏”阻止。如果满足下列条件,则对已安装在计算机上的控件进行升级时,就会引发一个异常:

注册为 ActiveX 控件的文件必须使用 Authenticode 技术签名。(该文件引用自 HKEY_CLASSES_ROOT\CLSID\{control_clsid}\InProcServer32,其中 control_clsidCLSID,由 OBJECT 标记指定。)

新控件的发布者名称以数字签名表示,它与现有控件数字签名中的发布者名称相匹配。

如果 ActiveX 控件打包为一个 CAB 文件,则该 CAB 文件必须经过签名。要安装的 DLL 或 OCX 也应该进行签名,以便随后的升级可以跳过“信息栏”。

如果“信息栏”阻止某个 ActiveX 控件,并且该控件会占用页面上的区域,则 Internet Explorer 将显示一个嵌入式图标和文本(而不是控件),表示需要安装 ActiveX 控件。最终用户将能够单击该区域或“信息栏”,以安装 ActiveX 控件。

ActiveX 控件是否以 CAB 文件的形式分发?

如果是,请注意有关升级该控件的未来安装提示也会被“信息栏”阻止,除非您对要注册为 ActiveX 控件的 DLL 或 OCX 进行签名。

根据是否安装有 ActiveX 控件,您的 Web 站点是否具有不同的行为(例如,自动重定向或刷新时的特殊行为)?

如果尚未安装控件就进行刷新,某些网页将自动进行重定向或表现不同。在某些情况下,以这种方式构建站点可能会阻止用户安装该控件,从而带来不好的用户体验。

由于网页无法区分是用户拒绝 ActiveX 控件的安装,还是“信息栏”阻止控件,所以安装 ActiveX 控件的推荐做法是:在一个解释控件用途的单独网页上创建该控件的一个实例。此外,还应在 <OBJECT> 标记中使用 <SPAN> 部分,以便为用户动态提供有关安装失败的“帮助”文本。

您的 Web 站点是否具有 Authenticode 对话框的图像?

为了防止用户混淆,您可以更新这些图像来反映新的 Authenticode 用户界面 (UI)。您可以使用用户代理字符串来确定浏览器的正确版本。(有关检测 SP2 的详细信息,请参阅常用技巧。)

ActiveX 安装对话框是否能阻止控件进行安装?

如果对话框没有提供安装 ActiveX 控件的选项,则说明该文件可能没有进行正确签名。请确保您的文件已签名,并且该签名仍然有效。默认情况下,当 ActiveX 控件的签名无效时,SP2 会阻止该控件的安装。

ActiveX 最佳做法

不要使用弹出窗口或 HTML 对话框来安装 ActiveX 控件。

不要建议用户降低他们的安全设置来安装 ActiveX 控件。

在描述控件的用途和对最终用户影响的单独页面上创建 ActiveX 控件的一个实例。

您的 Web 站点是否允许用户下载文件?

在 SP2 中,“信息栏”将阻止能够自动启动的文件下载提示。

在 SP2 中,用于文件下载、邮件附件、Shell 进程处理和程序安装的提示已经进行了修改,比它们在 Windows XP Service Pack 1 (SP1) 中更加一致、清晰。在 SP2 中,在下载可能会潜在损害用户计算机并可以进行签名的文件类型后,将显示发布者信息。(可以进行签名并可能潜在损害用户计算机的常见文件类型包括 .exe、.dll、.ocx 和 .msi)。

您的 Web 站点是否会自动启动下载提示?

如果当用户没有使用鼠标单击或按键来启动导航时,Web 站点尝试导航到生成文件下载对话框的资源,则文件下载提示将被“信息栏”阻止。

要确保下载不会被阻止,您可以将所有下载作为一个直接用户操作的结果。

您的 Web 站点是否包含其文件扩展名与其内容类型不匹配的文件?

如果您的站点包含由 MIME 处理程序处理的文件,则这些文件的扩展名应对应于与 MIME 处理程序相同的 ProgID。如果给定文件的内容类型 ProgID 与文件扩展名 ProgID 不匹配,则 XP SP2 中的 Internet Explorer 可能会采取下列操作:1) 可能会提示用户下载文件;2) 如果该文件无法在 MIME 处理程序中处理,则它将不会在扩展名处理程序中处理。

您可以通过更改内容类型以匹配文件扩展名,来修正这些不匹配。请确定这也适用于您的网页。

例外:此更改不会影响发送“content-disposition=attachment”标头的情况。在这些情况下,服务器建议的文件名或扩展名被认为是最终名称,并且不会随多用途 Internet 邮件扩展 (MIME) 探测而更改。

您的 Web 站点是否在站点上具有下载对话框的图像,或者显示在哪里单击以接受控件的图像/文本?

如果客户使用的是 Windows XP Service Pack 2,请确保更新指向下载提示的所有图像,以反映新的下载对话框。要确定显示图像的版本,您可以在 Internet Explorer 中使用“用户代理”字符串(有关检测 SP2 的详细信息,请参阅常用技巧)。

您的 Web 站点是否具有应进行数字签名的下载?

现在,SP2 可以检查能够进行数字签名的文件的数字签名。这些文件的最常见示例包括具有以下扩展名的文件:.exe、.dll、.cab、.ocx 和 .msi。如果您是可以使用 Authenticode 技术进行签名的文件的发布者,那么现在客户将能够验证您创建的文件。这适用于 Internet Explorer 和 Outlook Express。

您的 Web 站点是否使用弹出窗口?

Internet Explorer 包括有在 SP2 中默认开启的弹出阻止程序。这个弹出阻止程序可能会干预自动从脚本中生成新窗口的站点。对于需要自动弹出的情况,该弹出阻止程序包含了一个有帮助的“允许”列表。默认情况下,弹出阻止程序不会尝试阻止从 Intranet 或受信任站点区域启动的弹出。

Internet Explorer 将弹出窗口视为何物?

Internet Explorer 将尝试阻止从脚本自动打开的任何窗口,但 createPopup() 除外。某些受到影响的常用函数包括 window.open()showModelessDialog()showModalDialog()showHelp()。(注:自动以搜索窗格为目标的操作也会因弹出阻止限制而被阻止。)

作为用户操作的直接结果而打开的弹出窗口不会被阻止,例如单击某个页面元素。默认情况下,弹出阻止没有应用到 Intranet 或受信任站点区域。

如何确定 Internet Explorer 是否阻止了我的弹出窗口?

如果窗口被阻止,那么返回窗口对象的函数将返回空值。当弹出被阻止时,在使用 window.open() 的返回值来避免脚本错误之前,请始终对该值进行检查。

您的站点是否能根据阻止的弹出进行重定向或关闭页面?

只要可能,请不要根据阻止的内容进行重定向或关闭窗口。如果在弹出被阻止时,您的站点重定向到其他站点,那么对于客户而言,可能很难显示被阻止的弹出。在这种情况下,重定向的站点不会显示通常出现的“信息栏”,无法让用户轻松地访问弹出内容。

同样,如果某个窗口由于阻止弹出而关闭,那么显示该阻止弹出的“信息栏”入口点将与该窗口一起消失。

您的站点是否从弹出中启动弹出?

只要可能,请不要从一个弹出窗口中启动另一个自动弹出窗口。在弹出阻止程序中,第二个启动不会被视为用户操作,因而会被阻止。

是否自动启动 setHomePage() 对话框?

在 Windows XP Service Pack 2 中,setHomePage() 函数只能从用户操作中启动,类似于弹出窗口。自动启动的 setHomePage() 提示将被阻止。

如果异步请求信息,您的 Web 站点是否会打开一个新窗口?

如果站点在异步请求信息后打开特定的窗口,则 Internet Explorer 可能会阻止这些窗口,即使用户单击了链接以打开该窗口。如果在请求异步信息之前,直接从用户启动的操作(鼠标单击)打开窗口,那么这些窗口不会被阻止。用户启动的操作不能跨导航保持。

您的 Web 站点是通过 ActiveX 控件启动弹出窗口,还是通过页面上的其他对象启动弹出窗口?

对于其他弹出窗口,如果窗口不是从用户操作启动的,那么弹出阻止程序就会阻止它。一个窗口必须响应直接用户操作才允许被打开。

一般弹出建议

请不要在弹出窗口失败时进行重定向。

如果弹出窗口、下载或 ActiveX 控件被阻止,请不要关闭或自动重定向浏览器窗口。如果您关闭或重定向浏览器窗口,用户将无法在“信息栏”上单击并接受弹出窗口、下载或 ActiveX 控件。

请不要从弹出窗口中启动弹出窗口。

请不要从一个用户操作启动多个弹出窗口。

请不要从 showModelessDialog()showModalDialog() 调用中启动自动弹出窗口。

您的 Web 站点是否依赖于 Microsoft Java 虚拟机 (MSJVM)?

请参阅 Microsoft Web 站点上的 Microsoft Java Virtual Machine Support

浏览器窗口限制

您的 Web 站点是否将窗口布置为,使标题栏或地址栏位于可见显示顶端的上面,或者使状态栏位于可见显示底端的下面?

检查代码以确保您理解使用 window.open()window.createPopup() 方法对脚本启动的窗口进行的限制。脚本可以调用相同的方法来创建 Internet Explorer 有边窗口(使用 window.open() 方法),或 Internet Explorer 无边弹出窗口(使用 window.createPopup() 方法)。但是,您可能需要检查设计,以确保弹出窗口在适当的时候对用户可见,并且状态栏包含的信息正确。

下列指导将说明如何在运行 Windows Restrictions Security 功能的过程中使用脚本启动的窗口调用。

对于使用 window.open() 打开的窗口:

预期状态栏会出现,并为其编写代码。默认情况下,状态栏为开启,并且高度为 20-25 像素。

调整窗口的大小和内容,使它在视觉上适合窗口的整体大小。窗口不能覆盖任务栏,因此如果状态栏为开启状态,并且未考虑到任务栏,它可能会损失 40 像素。窗口在任务栏外的垂直大小不能超过 30 像素。

不要在屏幕外打开窗口 - 它们会进行一段最小的 XY 坐标偏移,使窗口完全显示在屏幕上。

与前面一样,窗口的显示会受到显示主题、字体大小和分辨率的影响,因此在您设计窗口时,可能还需要考虑这些 UI 的影响。

注:现在,带有 fullscreen=yeswindow.open() 会导致最大化的窗口,而不是 kiosk 模式的窗口。

对于使用 window.createPopup() 打开的窗口:

调整窗口的大小和内容,使它在视觉上适合窗口的整体大小。使用这个新功能,窗口将不会覆盖其父窗口的标题栏或状态栏,因此如果未考虑到标题栏或状态栏,它可能会损失 40 像素。请调整窗口的垂直大小,使其不超过页面的当前可见区域。

不要在 Internet Explorer 的 HTML 生成表面之外打开无边浏览窗口 - 它们会进行一段最小的 XY 坐标偏移,使窗口完全显示在客户端区域内。但有一个例外:最多有半个窗口可以存在于 Internet Explorer 客户端区域的左侧或右侧边缘之外。

与前面一样,窗口的显示会受到显示主题、字体大小和分辨率的影响,因此在您设计窗口时,可能还需要考虑这些 UI 的影响。

常用技巧

检测 SP2 中的 Internet Explorer

如果连接到您站点的浏览器是 SP2 中的 Internet Explorer,您可以使用 window.navigator.userAgent 来检测。

var g_fIsSP2 = false;

function browserVersion()

{

   g_fIsSP2 = (window.navigator.userAgent.indexOf("SV1") != -1);

   if (g_fIsSP2)

   {

   //This browser is Internet Explorer in SP2. 

   }

   else

   {

   //This browser is not Internet Explorer in SP2.

   }

}

如果用户代理字符串中包含“SV1”,说明连接到您站点的浏览器是 SP2 中的 Internet Explorer。

您的站点是使用 showModelessDialog() 调用还是 showModalDialog() 调用?

如果可能,请不要尝试创建 ActiveX 控件的新实例、自动启动文件下载或从这些对话框中自动启动弹出窗口。在这个方案中,当内容被阻止时将不会显示“信息栏”,因此用户将无法轻松地允许该内容。建议的解决方案是从 Internet Explorer 窗口中启动这些行为。

在内容受到阻止时,您的站点是否会重定向到另一个网页?

如果可能,在浏览器阻止内容(例如 ActiveX 控件、下载提示或弹出)时,请不要尝试重定向到另一个网页。在阻止该内容时,“信息栏”可能不会出现在重定向的页面上,因此用户可能无法轻松地查看该内容。

你可能感兴趣的:(windows)