3

我有一个 Web 浏览器,其中一些设置是使用 javascript 更改的。我正在尝试使用此处的示例,但无法获得正确的语法

脚本看起来像这样

        <div class="DisplayInput"><input type="radio" name="displaytype" 
value="decimal" onclick="setdisplayType('decimal');" checked="checked"><a 
    href="javaScript:setdisplayType('decimal');" 
    onclick="s_objectID=&quot;javascript:setdisplayType('decimal');_1&quot;;return this.s_oc?     this.s_oc(e):true">Decimal</a></div>

到目前为止,我已经尝试过这些但没有成功

this.webBrowser1.InvokeScript("setdisplayType");
this.webBrowser1.InvokeScript("setdisplayType('decimal')");
this.webBrowser1.InvokeScript("setdisplayType","decimal");
4

3 回答 3

7

在不知道您的应用程序错误发生了什么以及不知道是什么setdisplayType样子的情况下,我猜您可能正试图setdisplayType在加载该函数之前调用它。根据 MSDN 文档...

在实现它的文档完成加载之前,不应调用 InvokeScript(String, Object())。您可以通过处理LoadCompleted事件来检测文档何时完成加载。

也许您可以实现LoadCompleted事件处理程序,然后调用您的脚本。

希望这可以帮助!

于 2012-09-28T14:24:19.353 回答
1

您必须传递一个 Object 数组作为第二个参数。你可以这样做:

Object[] parameters = new Object[1]; //assuming your JS function has one parameter
parameters[0] = (Object)"yourStringParameter"; //for example the parameter is a string
yourBrowser.Document.InvokeScript("scriptName", parameters);
于 2015-04-28T13:22:01.203 回答
0

试试这个:

private async void web_LoadCompleted(object sender, NavigationEventArgs e)
{
  Object[] parameters = new Object[1]; 
  await yourBrowser.Document.InvokeScript("scriptName", parameters);
}
于 2016-08-27T18:20:22.483 回答