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对JSON进行模式匹配(Part 1-设计)

    为了讲解“用JavaScript对JSON进行模式匹配(Part 1-设计)”的完整攻略,我们需要分为以下几个部分来详细讲解: 确定匹配规则:定义模式和筛选条件。 认识JSON格式:了解JSON是什么,以及如何在JavaScript中访问和操作JSON。 设计匹配方案:选择合适的JavaScript库进行匹配和解析。 示例演示:通过两个实例来展示如何使用Ja…

    JavaScript 2023年5月27日
    00
  • JS实现加载和读取XML文件的方法详解

    JS实现加载和读取XML文件的方法详解 在Web开发中,我们有时会需要从服务器端获取XML文件,然后在前端进行解析和操作。本文将详细讲解JS实现加载和读取XML文件的方法,以及对XML文件进行解析和操作的技巧。 加载XML文件 加载XML文件主要有两种方式,一种是使用AJAX技术,另一种是使用XMLHttpRequest对象。下面分别进行讲解。 AJAX方式…

    JavaScript 2023年5月27日
    00
  • android studio3.0.1无法启动Gradle守护进程的解决方法

    解决Android Studio 3.0.1无法启动Gradle守护进程的方法 当我们使用Android Studio开发应用时,有时会遇到无法启动Gradle守护进程的问题,这个问题会导致我们无法编译或运行项目。本文将介绍几种解决这个问题的方法。 方法一:手动关闭Gradle守护进程 打开Task Manager(在Windows系统中,可以使用Ctrl+…

    JavaScript 2023年5月28日
    00
  • jquery遍历筛选数组的几种方法和遍历解析json对象

    下面我来为你详细讲解一下“jQuery遍历筛选数组的几种方法和遍历解析JSON对象”的攻略。 首先介绍一下遍历和筛选数组的几种方法: 遍历数组 方法一:for循环遍历 使用for循环来遍历数组的元素,可以通过数组下标来获取每一个元素,示例代码如下: var arr = [‘A’,’B’,’C’,’D’,’E’,’F’]; for(var i = 0; i &…

    JavaScript 2023年5月27日
    00
  • 详解Go-JWT-RESTful身份认证教程

    详解Go-JWT-RESTful身份认证教程 介绍 本文将详细介绍如何使用Go语言实现一套基于JWT(JSON Web Token)的RESTful身份认证系统。RESTful是一种基于HTTP协议、符合REST原则的接口设计风格,使用JWT进行身份认证和授权可以轻松实现API的状态无关性和安全性。 实现步骤 生成JWT Token 生成JWT Token是…

    JavaScript 2023年6月11日
    00
  • javascript url几种编码方式详解

    JavaScript URL几种编码方式详解 在JavaScript中,对URL进行编码是一项常见的任务。URL编码是将URL中的字符串转换为可安全传输的格式的过程。在编码URL之前,需要了解几种不同的URL编码方式以及它们的适用场景。 encodeURIComponent() encodeURIComponent() 是Javascript中常用的编码函数…

    JavaScript 2023年5月20日
    00
  • JS获取屏幕高度的简单实现代码

    当我们需要获取浏览器窗口可视区域的高度时,可以使用JavaScript代码来实现。下面是获取屏幕高度的简单实现代码攻略: 1.通过window对象获取屏幕高度 我们可以通过window对象来获取浏览器窗口的高度。这里有一个简单的例子: var height = window.innerHeight; 其中,window.innerHeight属性用于获取浏览…

    JavaScript 2023年6月11日
    00
  • 基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作

    让我为您详细讲解“基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作”的完整攻略。 Mutation Observer 介绍 Mutation Observer 是 HTML5 新增的一种 DOM 监听方法,可以用来监听 DOM 树的变化。它可以监听某个 DOM 节点及其所有子节点树上的任何 DOM 改变,并可以配置响应相应的变…

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