IE8 / 9 - 从vbscript启动时的不同渲染行为?

时间:2012-02-02 03:58:04

标签: internet-explorer vbscript rendering

我有一个脚本,我把它放在一起,a)创建一个InternetExplorer对象,b)导航到我们内部调度系统的基于Web的界面,c)输入密码并选择适当的视图选项。脚本的基础知识如下:

Const READYSTATE_COMPLETE = 4

Dim objExplorer
Set objExplorer = Wscript.CreateObject("InternetExplorer.Application", "objExplorer_")

objExplorer.navigate "http://url.to.scheduling.page"

While objExplorer.busy Or objExplorer.ReadyState <> READYSTATE_COMPLETE
    Wscript.Sleep 50
Wend 

Dim objElem
Set objElem = objExplorer.document.getElementById("password")
objElem.value = "password"

Set objElem = Nothing

objExplorer.document.getElementById("commit").Click() 

While objExplorer.busy Or objExplorer.ReadyState <> READYSTATE_COMPLETE
    Wscript.Sleep 50
Wend 

我一直在用IE8和IE9做一些测试,并且发现当我编写IE对象的脚本时,页面HTML被错误地呈现(特别是一些文本用粗体/斜体表示)。但是,如果我手动启动IE8或IE9(而不是通过脚本),则页面呈现正确。请参阅下面的截图:

IE RENDERING - MANUAL LAUNCH enter image description here

SCRIPTED IE RENDERING(文本粗体和斜体) enter image description here

我最初怀疑这与IE文档/浏览器模式在脚本化IE对象中获取不同的默认值有关,但是呈现的HTML具有<!-- DOCTYPE html -->声明和(至少根据IE)开发工具),两个版本都以标准模式显示。

有没有人对脚本化的后IE7 IE对象呈现页面的经验与手动启动的对象有什么不同?脚本和手动启动的对象是否会以任何不同的方式报告自己(可能是浏览器嗅探并动态生成CSS的js函数?)

任何想法都赞赏。

1 个答案:

答案 0 :(得分:0)

IE9包含32位和64位版本(请参阅http://support.microsoft.com/kb/896457)。使用Wscript.CreateObject的方法(“InternetExplorer.Application”将打开IE9的64位版本,该版本存在Flash Player,.Net Security等问题。

要查看32位版本是否提供相同的渲染差异,请比较直接从以下位置使用iexplore.exe时网址的显示方式:

  

C:\ Program Files \ Internet Explorer(64位)

     

C:\ Program Files(x86)\ Internet Explorer(32位)

如果IE9 32位模式正确显示,请在脚本中包含以下子例程,并将其作为脚本的第一行调用。

Sub Force32bit()
    If InStr(UCase(WScript.FullName), "SYSTEM32") > 0 and CreateObject("Scripting.FileSystemObject").FolderExists("C:\Windows\SysWOW64") Then 
        Dim objShell : Set objShell = CreateObject("WScript.Shell") 
        objShell.CurrentDirectory = "C:\Windows\SysWOW64" 
        objShell.Run "wscript.exe " & WScript.ScriptFullName,1,False  
        WScript.Quit 
    End If 
End Sub

这确定脚本是否默认使用IE9 64位,如果是,则退出并重新启动脚本以使用IE9 32位。这应该允许在以前版本的IE上使用相同的脚本。 (有关详细信息,请参阅http://www.visualbasicscript.com/Launching-IE-in-32-bit-mode-from-VBS-script-m80179-p2.aspx