【问题标题】:Using jQuery in Zombie.js在 Zombie.js 中使用 jQuery
【发布时间】:2014-01-15 11:27:24
【问题描述】:

我意识到还有其他库设计用于在 Zombie 中使用类似 jQuery 的语法,但出于我的目的,我特别希望/需要使用 jQuery 本身以保持与一些早期编写的代码的兼容性。

我安装了 npm jQuery 包,我一直在尝试将 jQuery 导入我的脚本,然后使用 Zombie 返回的窗口对其进行初始化,如下所示:

var Zombie= require("zombie"),
$ = require("jquery")
, zombie = new Zombie();

zombie.visit("http://www.mysite.com", function (err, browser, status) {
  if(err) {
    console.log("Error: " + err);
  }

  //Initialize a new jQuery instance with the current window returned by Zombie
  var $window = $(browser.window);
  //Get an actual jQuery object so we can search for stuff
  var document = $window("body");

  var inputBoxUsername = document.find("input#username");

  console.log(inputBoxUsername.html());
});

这不起作用,因为它说没有 html() 函数,而且 jQuery 实际上似乎没有返回我期望的对象。

有没有办法在 Zombie 中使用 jQuery?

【问题讨论】:

  • i的值是多少?
  • 抱歉,编辑失败。它应该是document

标签: jquery zombie.js


【解决方案1】:

如果您的网站已经在加载 jquery,您可以立即使用加载的 jQuery,这在某些情况下要容易得多。

var document = browser.window.$("body");

将按预期工作,因为它是一个 jQuery 对象。

我认为无论如何你都可以添加脚本文件,这样你就可以动态地添加 jQuery 并按照我刚才提到的那样使用它。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    如果您正在使用的页面不包含 jQuery,并且您只是检索数据,那么请尝试在 Zombie 之上使用 Cheerio:

    zombie.visit("http://example.com", function () {
      var $ = cheerio.load(browser.html());
      console.log($('title').text());
    }
    

    【讨论】:

    • 最好的实现!
    猜你喜欢
    • 1970-01-01
    • 2016-02-09
    • 2016-05-14
    • 2016-12-12
    • 2012-09-13
    • 2016-05-10
    • 1970-01-01
    • 2011-11-12
    • 2012-09-14
    相关资源
    最近更新 更多