导航:首页 > 编程语言 > wpfwebbrowser与js交互

wpfwebbrowser与js交互

发布时间:2021-02-27 20:13:22

Ⅰ 如何用c#本地代码实现与Webbrowser中的javaScript交互

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1. = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = this;
// Uncomment the following line when you are finished debugging.
//webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.DocumentText =
"<html><head><script>" +
"function test(message) { alert(message); }" +
"</script></head><body><button " +
"onclick=\"window.external.Test('called from script code')\">" +
"call client code from script code</button>" +
"</body></html>";
}
public void Test(String message)
{
MessageBox.Show(message, "client code");
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("test",
new String[] { "called from client code" });
}
}
链接0:codeproject中VB和js的交互
链接1:自定义数据类型的参数传递
代码:
dynamic data = webBrowser1.Document.InvokeScript("eval", new[] {
"(function() { return { latitude: 1, longitude: 2 }; })()" });
MessageBox.Show("Data: " + data.latitude + ", " + data.longitude);
链接:添加js到已加载的网页
代码:
private void addScript(HtmlElement head, string scriptSource)
{
HtmlElement lhe_script = head.Document.CreateElement("script");
IHTMLScriptElement script = (IHTMLScriptElement)lhe_script.DomElement;
script.src = scriptSource;
head.AppendChild(lhe_script);
}
addScript(Webbrowser.Head, @"<Change File Path here>jquery.min.js");
addScript(WebBrowser.Head, @"InjectMonitor.js");
Selenium则是一个利用http协议,来实现js和其他语言之间的通信,他强大的地方是js部分。
ide/main/src/content/selenium-runner.js
// overide _executeCurrentCommand so we can collect stats of the commands executed
_executeCurrentCommand : function() {
/**
* Execute the current command.
*
* @return a function which will be used to determine when
* execution can continue, or null if we can continue immediately
*/
var command = this.currentCommand;
LOG.info("Executing: |" + command.command + " | " + command.target + " | " + command.value + " |");
var handler = this.commandFactory.getCommandHandler(command.command);
if (handler == null) {
throw new SeleniumError("Unknown command: '" + command.command + "'");
}
command.target = selenium.preprocessParameter(command.target);
command.value = selenium.preprocessParameter(command.value);
LOG.debug("Command found, going to execute " + command.command);
updateStats(command.command);
this.result = handler.execute(selenium, command);
this.waitForCondition = this.result.terminationCondition;
},
selenium-api,CommandHandlerFactory是Api核心,在selenium-api.js,selenium-commandhandlers.js文件中实现。

Ⅱ WebBrowser和JS交互时怎么使用VBarray 传递数组

转化为字符串,之后在分割就对了

Ⅲ c#的webbrowser调用本地javascript脚本

你好!
你的意思是调用你自己写的JS文件,而不是链接过去页面里面的脚本对吧!
其实你可以换个思路的。
webBrowser1.Navigate(http://gd.10086.cn/);
webBrowser1链接这个网页后,它的DocumentText 里面就有内容了。这个时候你可以把你的脚本动态写到网页上去的。示例:
webBrowser1.DocumentText + = " <script type='text/javascript'>function Alert_{ alert('hello world');} </script>";
然后再使用方法webBrowser1.Document.InvokeScript("Alert_");调用即可
如果是http://gd.10086.cn/本身存在的脚本,直接用上面的方法就行了。

Ⅳ WPF中WebBrowser 如何在页面加载的时候注入js脚本

object[] objects = new object[2]; //写入脚本方法,暂时专保留属
objects[0] = 1615;
objects[1] = EnumDefenceAreaStatus.DefenceAreaStatus1;

web.InvokeScript("changeStatus", objects);

Ⅳ C# webbrowser 里如何调用网页里的js函数

webBrowser1.Navigate("javascript:alert('hello');");

说明来
webBrowser1.Navigate("javascript:[你要执行的javascript语句源];");

如果你要执行那个函数代码如下:
webBrowser1.Navigate("javascript:test.work('1','0','5');");

Ⅵ webbrowser 里面的js怎么调用C#

通过webBrowser实现#和javascript互调
实现步骤:
一、新建一个窗体,加入webBrowser控件
控件名:webBrowser1

二、在窗体后台代码加入如下定义
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
...
}

三、加载网页
webBrowser1.Navigate(Application.StartupPath + "/UpDateReport.htm");
webBrowser1.ObjectForScripting = this; //这句必须,不然js不能调用C#

四、调用脚本方法
/// <summary>
/// 脚本方法
/// </summary>
/// <param name="tag">JS函数名|参数1|参数2</param>
/// <returns></returns>
private object EXEC_JS(System.Windows.Forms.WebBrowser webBrowser, string tag)
{
string[] args = tag.Split('|');
if (args.Length == 1)
{
return webBrowser.Document.InvokeScript(args[0], null);
}
else
{
object[] objects = new object[args.Length - 1];
Array.Copy(args, 1, objects, 0, objects.Length);
return webBrowser.Document.InvokeScript(args[0], objects);
}
}

五、C#调用脚本方法例子,可以有返回值
//JS方法
<script language="javascript">
function js_fun(args)
{
alert("我是通过js脚本弹出的。你输入的内容是:"+args);
return "JAVASCRIPT";
}
</script>
//C#代码
object returnvalue = EXEC_JS(webBrowser1, "js_fun|参数字符串");
MessageBox.Show("js方法返回值是:" + returnvalue.ToString());

六、JS调用C#方法的例子
//C#方法
public string Test(string args)
{
return "你输入的是:"+args;
}
//JS代码
<script language="javascript">
window.onload = function()
{
var CS_returnvalue= window.external.Test("aaa");
alert(CS_returnvalue);
}
</script>

Ⅶ VB:高分请教webbrowser里的js与程序交互问题

VBA的代码和vbs、js的代码虽然在语法有相似之处,但是结构完全不一样,VBA为编译代码,脚本为解释代码,两者不能实现直接交互,只能通过间接交互实现
这里通过VBScript修改浏览器标题,触发VB内部的TitleChange而实现交互

网页代码:
<a onclick=VBScript:document.title="VB:test('X','Y','Z')">文字</a>

窗体代码:
Option Compare Text

Private Function Test(S1, S2, S3)
MsgBox S1 & S2 & S3
End Function

Private Sub Form_Load()
WebBrowser1.Navigate "e:\1.htm"
End Sub

Private Sub WebBrowser1_TitleChange(ByVal Text As String)
If Left(Text, 3) = "VB:" Then
Dim s As String, fncName As String, l As Long, args
s = Mid(Text, 4)
s = Replace(s, "(", " ")
s = Replace(s, ")", " ")
l = InStr(s, " ")

fncName = Trim(Left(s, l - 1))
args = Split(Mid(s, l), ",")
For i = 0 To UBound(args)
args(i) = Trim(args(i))
Next

Select Case fncName
Case "test"
Test args(0), args(1), args(2)
End Select
Else
Caption = Text
End If
End Sub

Ⅷ C#中webbrowser与javascript(js)交互,使程序集COM可见”。这样做会爆漏程序的安全性吗

开发环境是Visual Studio 2008 .阅读此文需要有C#和javascript开发基础。

1.首先新建一个项目,在默认窗体form1上拖拽一个webbrowser1.

做完这些基本的设置之后就可以让webbrowser和js交互了,交互方法如下:

C#调用js函数的方法:

首先在js中定义被c#调用的方法:
function Messageaa(message)
{
alert(message);
}
在c#调用js方法Messageaaprivate void button1_Click(object sender, EventArgs e)
{ // 调用JavaScript的messageBox方法,并传入参数
object[] objects = new object[1];
objects[0] = "c#diao javascript";
webBrowser1.Document.InvokeScript("Messageaa", objects);
}

用JS调用C#函数的方法:

首先在c#中定义被js调用的方法:public void MyMessageBox(string message)
{
MessageBox.Show(message);
}

在js中调用c#方法:<!-- 调用C#方法 -->
<button onclick="window.external.MyMessageBox('javascript访问C#代码')" >javascript访问C#代码</button>

Ⅸ C# webbrowser 调用JS函数 求教!!

webBrowser1.Navigate("javascript:alert('hello');");

webBrowser1.Document.InvokeScript("Messageaa", objects);

阅读全文

与wpfwebbrowser与js交互相关的资料

热点内容
班级怎么创建网站 浏览:26
win10系统重装只剩c盘 浏览:972
句馆app怎么用 浏览:98
极速下载管家的文件路径 浏览:535
网站产品是什么意思 浏览:183
苹果电脑怎么压缩视频文件怎么打开 浏览:435
app的发展趋势国家政策报告 浏览:895
字符串反转java 浏览:321
如何制作安装系统镜像文件 浏览:399
win10文件夹左上角有红点 浏览:487
你为什么学plc编程 浏览:828
网络连接没了 浏览:991
代码打印pdf 浏览:563
扣扣红包网络连接失败 浏览:301
win10商城下载文件在哪 浏览:975
系统制作镜像文件 浏览:249
苹果手机指纹贴有危险 浏览:329
哪里有高中生学编程的 浏览:984
二零一八版cad的文件布局 浏览:181
js右键选中treeview 浏览:904

友情链接