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);