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中 ES6变量的结构赋值

    下面是关于“JavaScript中 ES6变量的结构赋值”的完整攻略。 什么是ES6变量的结构赋值 ES6中引入了一种新的变量赋值方式,叫做“结构赋值”(Destructuring Assignment)。结构赋值可以让我们方便地从数组和对象中提取值,然后赋值给变量。 数组结构赋值 数组结构赋值是指对于数组中的每个元素,通过相应位置上的变量名进行访问和取值赋…

    JavaScript 2023年6月10日
    00
  • JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享

    JavaScript 中函数参数的传递方式既有值传递(by value),也有引用传递(by reference)。 值传递 函数参数以基本数据类型(如Number、String、Boolean等)为例,是以值传递的方式进行的。值传递表示将实际传递给函数的参数值(即实参)复制一份,传递给函数中对应的参数(即形参),函数中对参数值的修改不会影响到实参的值 下面…

    JavaScript 2023年5月27日
    00
  • 基于JavaScript实现密码框验证信息

    关于“基于JavaScript实现密码框验证信息”的完整攻略,介绍如下: 1. 确定密码验证的具体需求 在实现密码框验证信息前,首先需要明确密码验证的具体需求,例如: 密码长度是否需要限制? 密码是否需要包含特定的字符、数字、大小写字母、符号等要素? 密码是否需要与确认密码保持一致? 密码校验失败时需要如何提示用户? 透彻地明确这些细节,才能更好地编写 Ja…

    JavaScript 2023年6月10日
    00
  • JavaScript中的纯函数与偏函数你了解吗

    JavaScript中的纯函数和偏函数是两个非常重要的概念。它们都可以提高代码的可读性、可维护性和可测试性。下面我们来详细讲解一下这两个概念。 纯函数 纯函数是指不依赖于外部状态(如全局变量、文件等)并且给定相同的输入,总是返回相同的输出的函数。简而言之,纯函数不会影响外界,也不受外界影响。纯函数具有以下优点: 可以更加方便的进行测试,因为不需要考虑外部状态…

    JavaScript 2023年5月27日
    00
  • js对象实现数据分页效果

    实现数据分页效果,可以使用 JavaScript 中的对象技术。具体而言,可以将需要分页的数据存储在一个 JavaScript 对象中,并根据用户的分页请求,从对象中提取出需要的数据子集以供展示。 以下是实现对象数据分页效果的完整攻略: 1. 创建数据对象 创建一个 JavaScript 对象来存储需要分页的数据。对象中应该包含两个属性:data 和 pag…

    JavaScript 2023年6月10日
    00
  • utf-8编码引起js输出中文乱码的解决办法

    下面是关于“utf-8编码引起js输出中文乱码”的解决办法的完整攻略。 问题描述 当我们在使用 JavaScript 输出中文时,如果页面的编码方式为 utf-8,那么经常会出现中文乱码的问题。就算页面的编码设置正确且合法,但还是无法避免可能遇到的中文输出乱码问题。接下来我们将介绍如何解决这个问题。 解决办法 一个常见的解决方法是将需要输出的中文字符转为 u…

    JavaScript 2023年5月20日
    00
  • Immer 功能最佳实践示例教程

    当提到Immer时,就不得不提它最常见的用途——用于高效管理和修改JavaScript对象。但是Immer并不是一个普通的库,相反,它是一个提供了便利性和可重用性的JavaScript模块,其目的在于简化代码中的树形复杂性。下面是如何在您的应用程序中使用它的一些最佳实践: 1. 安装Immer 在使用Immer的程序中,您需要首先安装它。您可以在终端中使用以…

    JavaScript 2023年6月11日
    00
  • JavaScript cookie的设置获取删除详解

    我可以为您详细讲解“JavaScript cookie的设置、获取、删除详解”的攻略。 什么是Cookie 在介绍Cookie设置、获取和删除之前,我们先来了解一下什么是Cookie。 Cookie,也称为Web Cookie或浏览器Cookie,指网站为了辨别用户身份,存储在用户本地终端(通常是浏览器)上的数据(通常经过加密)。 Cookie的组成 一个典…

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