我该如何无头运行JavaScript?
我正在寻找像Firefox中的“Scratchpad”一样的选项,可以在没有浏览器的情况下运行JavaScript,并对特定网站进行DOM操作,最好可以从命令行执行。
我该如何无头运行JavaScript?
我正在寻找像Firefox中的“Scratchpad”一样的选项,可以在没有浏览器的情况下运行JavaScript,并对特定网站进行DOM操作,最好可以从命令行执行。
jsdom
,它允许您从给定源代码操作 DOM。由于您说您正在寻找像 Scratchpad 这样的解决方案,puppeteer
也可能适用。它使用无头 Chromium 并将让您以编程方式控制 Chromium。我认为您需要 puppeteer
,但从技术上讲,它使用了浏览器,因此您可能需要 jsdom
。
puppeteer
or jsdom
(detailed above).mkdir javascript && cd javascript
npm
(the node package manager): npm init -y
puppeteer
:
npm install puppeteer
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.addScriptTag({content:`
document.querySelector('div>h1').textContent = 'Example Puppeteer'
`})
await page.evaluate(() => {
document.querySelector('div>p').textContent = "Just another way to do things."
});
// this ^ is slightly different because in the
// first the javascript is being injected as a
// script tag, while in the second the div>p is
// actually being manipulated. The first would
// probably be closer to scratchpad though.
await page.screenshot({path: 'screenshot.png'});
await browser.close();
})();
node index.js
jsdom
:
npm install jsdom
const { JSDOM } = require('jsdom')
const { document } = (new JSDOM(`<!DOCTYPE html><html><head></head><body><p>Hello</p></body></html>`)).window
document.querySelector('p').textContent = 'Hello World!'
console.log(document.querySelector('p').textContent) // Will output 'Hello World!'
node index.js
如果你正在使用 Google Chrome 浏览器,你需要安装一个名为 Scratch JS 的扩展程序。它可以在浏览器的应用商店中找到。如果你想逐行运行你的代码,你可以通过在电脑上按下 Ctrl + Shift + I 进入检查模式,然后进入控制台来实现逐行运行 JavaScript 代码。如果你想要运行整个程序,你必须将 Scratch JS 安装为一个扩展程序。
它无法从Unix命令行运行。您需要从Firefox提供的Scratchpad中运行它。
只要您的网站在Firefox中打开,它就会始终执行。
编写以下代码
(function () {
var
getRandomValue = function () {
var
randomValue = Math.floor(Math.random() * (Math.pow(2, 16)))
;
return randomValue
},
setFieldsToRandomValue = function () {
document.getElementById('lst-ib').value = 'TEST' + (getRandomValue());
}()
;
}())
Scratchpad主要用于执行JavaScript和DOM操作,无法从Unix命令行运行。