如何在WebBrowser控件中注入Javascript脚本

如何在WebBrowser控件中注入Javascript脚本,第1张

在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")

1、html元素事件中;

2、<script>元素中;

3、外部脚本文件;

javascript:是表示在触发默认动作时,执行一段JavaScript代码,而 javascript:表示什么都不执行,这样点击时就没有任何反应。

href:URL    规定链接的目标 URL。

<a href="www.baidu.com"></a>   这个a标签的话就是指点击后跳转到百度首页

<a href="javascript:"></a>  点击后是不会跳转的,一般用于开发时页面还未完成。

扩展资料:

JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。

JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等 *** 作JavaScript都可直接对这些事件给出相应的响应。

JavaScript脚本语言不依赖于 *** 作系统,仅需要浏览器的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支 持JavaScript脚本语言,JavaScript已被大多数的浏览器所支持。

参考资料来源:百度百科-JavaScript

通过webBrowser实现C#和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脚本d出的。你输入的内容是:"+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>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11575531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存