【问题标题】:Injecting javascript into zombie.js将javascript注入zombie.js
【发布时间】:2014-05-24 05:34:55
【问题描述】:

您好,我想知道 node js 和僵尸 js 是否能够将 javascript 文件注入到无头浏览器中,类似于您可以使用 phantomjs 执行的操作。

例如在 phantom js 中你会这样做:

page.injectJs("amino/TVI.js")

我使用了 phantomjs,它确实做了我想做的事情,但是由于使用 phantom js 需要高内存,我正在测试其他选项。

【问题讨论】:

  • 您熟悉小书签的工作原理吗?也许这可以帮助你完成你想要完成的事情。

标签: javascript node.js phantomjs zombie.js headless-browser


【解决方案1】:

试着换个角度思考。你已经拥有了僵尸中的一切,可以注入你想要的一切。

例如:that.browser.window 指向 jsdom 窗口,您的站点 javascript 的每个部分都将其用作基础。因此,您可以访问已加载页面中的 dom 和所有其他窗口对象。

我不知道你想通过注入实现什么 - 你不应该用它来测试,但看起来这不是你的实际目标

【讨论】:

    【解决方案2】:

    您可以将脚本标签附加到文档对象中,因为它支持僵尸中的 DOM API。

    以下示例展示了如何将 jquery 插入僵尸主页:

    var Browser = require("zombie");
    var assert = require("assert");    
    
    // Load the page from localhost
    browser = new Browser()
    browser.visit("http://zombie.labnotes.org/", function () {    
    
      assert.ok(browser.success);
    
      // append script tag
      var injectedScript = browser.document.createElement("script");
      injectedScript.setAttribute("type","text/javascript");
      injectedScript.setAttribute("src", "http://code.jquery.com/jquery-1.11.0.min.js");    
    
      browser.body.appendChild(injectedScript);    
    
      browser.wait(function(window) {
        // make sure the new script tag is inserted
        return window.document.querySelectorAll("script").length == 4;
      }, function() {
        // jquery is ready
        assert.equal(browser.evaluate("$.fn.jquery"), "1.11.0");
        console.log(browser.evaluate("$('title').text()"));
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 2016-05-22
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多