【问题标题】:HtmlDocument.InvokeScript Issue in .NET WebBrowser Control.NET WebBrowser 控件中的 HtmlDocument.InvokeScript 问题
【发布时间】:2026-02-05 22:40:01
【问题描述】:

我正在尝试对 last.fm 进行包装,并且需要调用页面中的一些 javascript 函数。尤其是 Stop、Skip、Ban 和 Love。

InvokeScript 似乎适用于页面 HTML 本身内的任何脚本函数,但不适用于从外部脚本文件加载的脚本。

例如,skip函数的实际调用是LFM.Flash.Player.skip(),所以我尝试了如下:

_browser.Document.InvokeScript("LFM.Flash.Player.skip");

但它所做的只是返回 null,页面上什么也没有发生。

我已经确认该调用至少可以像使用 Chrome 检查器和控制台键入的那样工作。 (还没有弄清楚是否有办法在 IE 中调用任意 javascript ......任何建议表示赞赏)

是否有一些特殊的方式必须调用该函数?

另外,是的,我已经尝试过在脚本调用中使用和不使用括号......仍然没有运气。

编辑:明确地说,我是在 WinForms 浏览器控件中执行此操作,而不是在 ASP.NET 页面中。

【问题讨论】:

    标签: c# .net javascript webbrowser-control


    【解决方案1】:

    调用skip的时候不是少了括号吗?否则这只会“引用”函数,不会调用它。

    【讨论】:

    • 根据 MSDN 文档,您将参数分别传递给函数,而 InvokeScript 的第一个参数是函数名称而不是要评估的代码。
    【解决方案2】:

    我遇到了同样的问题,这为我解决了:

    • 通过在外部浏览器中手动加载页面来确保控制台中没有错误
    • IE 控件似乎正在缓存页面/脚本 ==> 我发现在实际 IE 浏览器中刷新页面也会刷新 .NET IE 控件中的页面。您还可以使用调试工具清除缓存。我为每一次更改都这样做,它有效...

    希望这会有所帮助!

    【讨论】: