1

我认为InvokeScript可能有效,但没有。

strHTML =
(
<!DOCTYPE html>
<html>
    <head>
        <script> function displayDate() { document.getElementById("demo").innerHTML=Date(); }</script>
    </head>
    <body>
        <p id="demo" onclick="displayDate()">This is a paragraph. Click here.</p>
    </body>
</html> 
)

new WebBrowser(strHTML)

Class WebBrowser
{
    __New(strHTML) { 
        static WB
        Gui, New, Resize 
        Gui, Add, ActiveX, vWB w780 h580 , Shell.Explorer  
        Gui, show, w800 h600

        WB.Navigate("about:blank")
        Loop
           Sleep 10
        Until (WB.readyState=4 && WB.document.readyState="complete" && !WB.busy)    

        WB.Document.Write(strHtml)
        ; WB.Document.Close()

        WB.document.InvokeScript("displayDate")
        ; WB.document.parentWindow.document.InvokeScript("displayDate") ; does not work
        return this

        GuiClose:
        ExitApp
    }
}
4

1 回答 1

3

至少有两种方法可以调用该函数:

WB.document.parentWindow.execScript("displayDate()")
WB.document.parentWindow.displayDate()

脚本中的所有全局函数都可以作为window对象的方法使用。

您链接到的文章中提到的 WebBrowser 控件是 .NET Framework 的一部分,与您使用的 WebBrowser 控件不同。这就是为什么尝试调用InvokeScript会引发“未知名称”错误消息的原因。

于 2013-03-02T09:25:44.257 回答