A. C# winform WebBrowser怎么获取js中的变量的值怎么触发js的事件
参考如下代码:
//项目中添加Micrsoft.mshtml引用
//Begin temp.htm-------
<html>
<head>
<title>demo</title>
<script language="javaScript" type="text/javascript">
var testText = "Zswang";
function ShowMessage(AText)
{
alert(testText);
alert(AText);
}
</script>
</head>
</html>
//End temp.htm-------
using mshtml;
using System.Reflection;
private void button1_Click(object sender, EventArgs e)
{
IHTMLDocument2 vDocument = webBrowser1.Document.DomDocument as IHTMLDocument2;
IHTMLWindow2 vWindow = (IHTMLWindow2)vDocument.parentWindow;
Type vWindowType = vWindow.GetType();
object testText = vWindowType.InvokeMember("testText",
BindingFlags.GetProperty, null, vWindow, new object[] { }); // 读取
Console.WriteLine(testText);
vWindowType.InvokeMember("testText",
BindingFlags.SetProperty, null, vWindow, new object[] { "Zswang 路过" }); // 设置
vWindowType.InvokeMember("ShowMessage",
BindingFlags.InvokeMethod, null, vWindow, new object[] { 12345 }); // 执行方法
}
private void button2_Click(object sender, EventArgs e)
{
IHTMLDocument2 vDocument = webBrowser1.Document.DomDocument as IHTMLDocument2;
IHTMLWindow2 vWindow = (IHTMLWindow2)vDocument.parentWindow;
vWindow.execScript("ShowMessage(67890);", "JavaScript"); // 执行脚本
}
B. C# webbrowser 里如何调用网页里的js函数
webBrowser1.Navigate("javascript:alert('hello');");
说明来
webBrowser1.Navigate("javascript:[你要执行的javascript语句源];");
如果你要执行那个函数代码如下:
webBrowser1.Navigate("javascript:test.work('1','0','5');");
C. C#winform WebBrowser怎么获取js中的变量的值怎么触发js的事件
让函数去返回变量的值或触发事件,在C#里调用这个JS函数
stringstr=webBrowser1.Document.InvokeScript("js函数名","参数");
D. 如何在WebBrowser控件中注入Javascript脚本
在WebBrowser中注入并执行javascript代码
更多 0
c#WebBrowserWinForm
WebBrowser控件用来显示网页内容,有时候我们需要在网页中执行一段自定义的javascript代码。
如下是实现和注释:
//找到head元素
HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
//创建script标签
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
//给script标签加js内容
element.text = "function sayHello() { alert('hello') }";
//将script标签添加到head标签中
head.AppendChild(scriptEl);
//执行js代码
webBrowser1.Document.InvokeScript("sayHello");
E. C# Winform webbrowser加载完页面后如何[修改]页面的js内容
看楼主你描述的貌似是想往其他页面注入数据,其实不是修改它的JS而是替换成专你自己的js
var htmlDoc = (IHTMLDocument3)webBrowser1.Document.DomDocument;
HTMLHeadElement head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
var script = (IHTMLScriptElement)((IHTMLDocument2)htmlDoc).createElement("script");
script.text = "window.onload=function() { ....... }";
head.appendChild((IHTMLDOMNode)script);
代码是刚刚网上当的属,看了下差不多就这意思吧
F. webbrowser 执行网页中的JS
在界面上拖入QAxWidget并指定控件为{8856F961-340A-11D0-A96B-00C04FD705A2},这个值可以通过OleView.exe查到然后通过IHTMLWindow2接口的execScript方法执行Java
在界面上拖入QAxWidget,注意这里不建议直接在UI设计界面指定控件,否则可能引起QtCreator崩溃
建议在代码中动态设置,如:
ui->axWidget->setControl("Shell.Explorer"); ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");当然,上面的"C:/1.html"是我测试的页面
这里的办法是通过IHTMLWindow2接口的execScript方法执行JavaScript函数。可惜的是这个方法不支持函数返回值
#include <MsHTML.h> { QAxObject *document = ui->axWidget->querySubObject("Document"); IHTMLDocument2 *doc2; document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2); if (doc2) { IHTMLWindow2 *win2 = nullptr; if (doc2->get_parentWindow(&win2) == S_OK) { BSTR s1 = SysAllocString(L"Test()"); BSTR s2 = SysAllocString(L"JavaScript"); VARIANT ret; win2->execScript(s1, s2, &ret); SysFreeString(s2); SysFreeString(s1); } } }
JavaScript函数如下
<script language="javascript" type="text/javascript"> function Test() { alert("你调用了全局函数Test"); } </script>
G. WPF中WebBrowser 如何在页面加载的时候注入js脚本
object[] objects = new object[2]; //写入脚本方法,暂时专保留属
objects[0] = 1615;
objects[1] = EnumDefenceAreaStatus.DefenceAreaStatus1;
web.InvokeScript("changeStatus", objects);