C# 执行Javascript脚本的方法步骤

C# 执行 JavaScript 脚本是非常常见的需求,下面是执行 JavaScript 脚本的方法步骤:

1. 引入COM组件

首先需要引入COM组件“Microsoft Internet Controls”。在Visual Studio的项目中点开Solution Explorer,右键References -> Add Reference...,在Add Reference对话框中选择COM页签,找到Microsoft Internet Controls,确认添加。

2. 创建IE浏览器对象

接下来就是需要创建IE浏览器对象 -- 用Process类在后台启动IE进程,并且创建一个新的IE浏览器对象。

using System.Diagnostics;
using SHDocVw;
using mshtml;

public void CreateBrowserObject()
{
    Process p = new Process();
    p.StartInfo.FileName = "iexplore";//使用IE浏览器
    p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//隐藏窗口
    p.Start();//启动IE进程
    SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass(); // 创建ShellWindows对象 
    foreach (SHDocVw.InternetExplorer explorer in shellWindows)
    {
        if (explorer.LocationURL.Contains("about:blank"))
        {
             this.browser = explorer;
            break;
        }
    }
}

3.执行JavaScript脚本

成功创建了IE浏览器对象后,就可以使用IHTMLWindow2接口的execScript方法执行脚本了。此接口提供了执行脚本的基本支持,为JavaScript脚本提供了一个运行环境。

public string ExecJavaScript(string script)
{
    IHTMLWindow2 window = (IHTMLWindow2)browser.Document.parentWindow;
    try
    {
        object r = window.execScript(script, "JavaScript");
        return r == null ? "" : r.ToString();
    }
    catch (Exception ex)
    {
        return ex.Message;
    }
}

示例1:获取网页标题

CreateBrowserObject();
this.browser.Navigate("http://www.qq.com");//访问QQ网站
while (this.browser.Busy)
{
    System.Threading.Thread.Sleep(1000); //等待IE加载页面完成
}
string title = ExecJavaScript("document.title"); //执行JS脚本获取页面Title
Console.Write(title);

示例2:打印页面所有的链接URL

CreateBrowserObject();
this.browser.Navigate("http://www.baidu.com");//访问百度网站
while (this.browser.Busy)
{
    System.Threading.Thread.Sleep(1000); //等待IE加载页面完成
}
IHTMLDocument2 doc = (IHTMLDocument2)browser.Document;
IHTMLElementCollection links = doc.links; //获取页面链接标签集合
for (int i = 0; i < links.length; i++)
{
    IHTMLElement link = (IHTMLElement)links.item(i, 0); //获取某一个链接标签
    Console.Write(link.getAttribute("href")); //获取链接地址
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 执行Javascript脚本的方法步骤 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 深入学习JavaScript 高阶函数

    完整攻略:深入学习JavaScript高阶函数 什么是高阶函数? 在JavaScript中,函数是一等公民。其意味着我们可以将函数分配给变量、将函数作为参数传递给其他函数以及从函数中返回函数。 函数能够接收一个或多个函数作为参数并将函数返回作为其结果的函数称为“高阶函数”。 为什么我们需要高阶函数? 高阶函数提供了一个强大的工具来处理同类型的原始值和对象。 …

    JavaScript 2023年6月10日
    00
  • 创建与框架无关的JavaScript插件

    创建与框架无关的JavaScript插件,需要考虑以下关键要点: 1. 避免与全局命名空间冲突 在创建插件时,应尽可能避免使用全局命名空间中已存在的变量和函数。可以通过创建一个伪命名空间,将插件中的所有变量和函数保存在其中,并确保不会与其他脚本发生冲突。 var MyPlugin = (function() { // 插件的代码放在这里… })(); 2…

    JavaScript 2023年6月11日
    00
  • Node.js的特点和应用场景介绍

    Node.js的特点和应用场景介绍 什么是Node.js Node.js是基于Chrome V8 JavaScript引擎的一个开源、跨平台的JavaScript运行环境。通过Node.js可以使用JavaScript进行服务器端的开发,以及命令行工具的编写。 Node.js的特点 异步IO Node.js采用事件驱动、非阻塞式IO的编程模型,使得模块之间的…

    JavaScript 2023年5月28日
    00
  • JS启动应用程序的一个简单例子

    JS启动应用程序的一个简单例子可以使用Node.js来实现。下面是具体步骤及示例说明: 步骤一:安装Node.js 首先需要在电脑上安装Node.js,可以去Node.js官网 https://nodejs.org/en/ 下载安装包,然后根据提示完成安装。 步骤二:编写代码 在安装完Node.js之后,可以通过编写代码来启动应用程序。可以新建一个.js文件…

    JavaScript 2023年5月27日
    00
  • Javascript生成json的函数代码(可以用php的json_decode解码)

    生成 JSON 格式的数据通过 JavaScript 来实现,通常使用 JSON.stringify() 方法。该方法接受一个 JavaScript 对象或数组作为参数,返回 JSON 字符串。 下面是生成 JSON 格式数据的示例代码: const data = { name: "your name", age: 18, gender:…

    JavaScript 2023年5月19日
    00
  • js获取url参数值的两种方式

    下面是使用 JavaScript 获取 URL 参数的两种方式的详细攻略。 方式一:使用正则表达式 使用正则表达式是一种比较常用的方式,它可以从 URL 中提取出我们需要的参数。这种方法核心就是通过正则表达式匹配 URL 字符串中的参数值。 function getQueryString(key) { const reg = new RegExp(‘(^|&…

    JavaScript 2023年6月11日
    00
  • 归纳下js面向对象的几种常见写法总结

    针对“归纳下js面向对象的几种常见写法总结”的完整攻略,我给出如下的详细讲解: 1. 面向对象编程 面向对象编程(OOP,Object Oriented Programming)是一种编程范式,它将任务分解成一些个体,这些个体通过彼此分工协作来完成任务。在 JavaScript 中,对象、构造函数、原型链和继承都是实现 OOP 的关键元素。 2. JS面向对…

    JavaScript 2023年5月27日
    00
  • JavaScript判断数组是否包含指定元素的方法

    判断一个数组是否包含指定元素,是 JavaScript 常见的问题之一。下面是几种实现此功能的方法: 方法一:利用 Array.prototype.includes() ES6 中,新增了 Array.prototype.includes() 方法,此方法可以判断一个数组是否包含指定元素。示例代码如下: const array = [1, 2, 3, 4, …

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部