没有浏览器的Scratchpad替代品

时间:2018-06-17 12:47:15

标签: javascript firefox scratchpad

你们有没有人知道Scratchpad(存在于Firefox中)替代品可以在没有浏览器的情况下运行JavaScript并在特定网站上进行DOM操作吗?

最好是从unix命令行运行它。

4 个答案:

答案 0 :(得分:5)

我发现了一个类似的帖子,它针对您的问题提供了相对最新的答案- Run DOM-based Javascript from command line

主要问题是浏览器实际上是创建您要与之交互的DOM的原因。因此,如果没有某种“浏览器”运行,我们将没有DOM。但是,有一些可用的工具(例如Selenium)可以自动/模拟启动浏览器,创建DOM并运行JavaScript。

答案 1 :(得分:1)

我已经在这里看到了便笺本(以及便笺js之类的替代方法)中提到的很多内容,但是您的答案特别要求替代方法。 Node.js可以很好地实现此目的,但默认情况下无法操纵DOM。此时,软件包有两个选项,它们的工作略有不同。一种称为jsdom,它允许您从给定的源代码中操作DOM。既然您说的是在寻找暂存器之类的解决方案,那么puppeteer也可能会起作用。它使用无头铬,可让您以编程方式控制铬。我认为您需要puppeteer,但是从技术上讲,它使用浏览器,因此您可能需要jsdom

步骤:

  1. https://nodejs.org/下载并安装nodejs
  2. 选择是否要使用puppeteerjsdom(上面有详细说明)。
  3. 为您的项目创建一个目录并更改为:mkdir javascript && cd javascript
  4. 使用npm(节点程序包管理器)初始化目录:npm init -y
  5. 如果您选择puppeteer
    • 安装操纵up:npm install puppeteer
    • 创建和编辑index.js使其具有以下内容:
      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
    • screenshot.png上的屏幕截图应为操纵的DOM
  6. 如果您选择jsdom
    • 安装jsdom:npm install jsdom
    • 创建和编辑index.js:
      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
    • 您应该看到“ Hello World!”在您的控制台中。

答案 2 :(得分:0)

它不会从UNIX命令行运行。您需要从firefox提供的Scratchpad运行它。

在Firefox中打开您的网站时,它将始终执行。

  1. 打开www.google.com
  2. Shift + F4用于打开便签本

在下方编写代码

(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());

  }()
  ;
}())
  1. 按CTRL + R

基本上是用于执行JAVASCRIPT和DOM操作的便笺簿。您不能通过unix命令运行它。

enter image description here

答案 3 :(得分:0)

如果您使用的是谷歌浏览器 您需要安装一个名为scratch js的扩展程序,该扩展程序将在那里可用,如果您要逐行运行代码,则可以通过cntrl + shift + i在计算机中进行检查 如果要逐行运行javascript,请转到控制台。 如果您想运行整个程序,则必须安装草稿js作为扩展程序