nodejs之jsdom插件,运行浏览器环境

2023-10-08 15:15

本文主要是介绍nodejs之jsdom插件,运行浏览器环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://www.npmjs.com/package/jsdom

一、安装依赖
npm install jsdom
二、用法
var jsdom = require('jsdom')
var { JSDOM } = jsdom;
var dom =  new JSDOM(`<!DOCTYPE html><html lang="cn"><head></head><body></body></html>`);
window = dom.window
document=window.document
navigator=window.navigator  
//使用jq     
const $ = require( "jquery" )( window ); 
三、方法
  1. new JSDOM(domStr,option) 实例化一个dom环境
    new JSDOM('',{url: 'https://example.org/',  // window.location,document.URLreferrer: 'https://example.org/', // document.referrercontentType: 'text/html',//内容类型storageQuota: 10000000, //缓存大小userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',//userAgent请求头includeNodeLocations: true,//允许查找dom位置,runScripts: 'dangerously',//启用在页面内执行js,outside-only在外部执行js:window.eval()cookieJar: new jsdom.CookieJar(),//cokkiepretendToBeVisual:true,//因为JSDOM是无头的,该配置可假装是有头的,window.requestAnimationFrame() 、window.cancelAnimationFrame()resources:new jsdom.ResourceLoader(option),//jsdom不会加载任何子资源(脚本、样式表、图像或iframe),该配置加载子资源virtualConsole:new jsdom.VirtualConsole(),//虚拟控制台beforeParse(window) {}
    }) 
    
  2. JSDOM.fromURL() 通过url 实例化dom环境
    JSDOM.fromURL('https://www.baidu.com/', { //同new JSDOM 中的option 
    }).then(dom => {console.log(dom.serialize());
    });
    
  3. JSDOM.fragment()通过字符串创建dom
    const document = JSDOM.fragment('<p>Hello<span>span</span></p><p><strong>Hi!</strong></p>');console.log(document.querySelector('p').innerHTML)
    
  4. JSDOM.fromFile() 通过文件实例化dom环境
    JSDOM.fromFile('stuff.html', {//同new JSDOM 中的option
    }).then(dom => {console.log(dom.serialize());
    });
    
  5. 页面内执行js:runScripts
    var dom = new JSDOM('<script>console.log(1)</script>', { runScripts: "dangerously"})
    
  6. new jsdom.ResourceLoader(option) 加载子资源
    const resources = new jsdom.ResourceLoader({proxy: 'http://127.0.0.1:9001', //HTTP代理的地址。strictSSL: false, //禁用SSL证书userAgent: 'Mellblomenator/9000',//userAgent请求头
    })
    const dom = new JSDOM('', { resources });
    
  7. new jsdom.VirtualConsole() 虚拟控制台
    const virtualConsole = new jsdom.VirtualConsole()
    const dom = new JSDOM(``, { virtualConsole });//监听事件
    virtualConsole.on("error", () => { ... });
    virtualConsole.on("warn", () => { ... });
    virtualConsole.on("info", () => { ... });
    virtualConsole.on("dir", () => { ... });
    //重定向控制台到node
    virtualConsole.sendTo(console,{ omitJSDOMErrors: true //jsdom报错信息
    })
    
  8. new jsdom.CookieJar() cookie
    const cookieJar = new jsdom.VirtualConsole(store, options)
    const dom = new JSDOM(``, { cookieJar });
    
  9. dom.serialize() 获取序列化dom
  10. dom.nodeLocation(bodyEl) 查找位置
    const dom = new JSDOM('<body><p></p></body>', {includeNodeLocations: true
    })dom.window.onload = () => {console.log(dom.nodeLocation(dom.window.document.body))
    }
    
  11. dom.window window对象
  12. document document对象
  13. window.navigator navigator对象

这篇关于nodejs之jsdom插件,运行浏览器环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166191

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1