Использование jQuery в Zombie.js

Я понимаю, что есть другие библиотеки, разработанные для использования jQuery-подобного синтаксиса с Zombie, но для моих целей я особенно хочу / должен использовать сам jQuery, чтобы поддерживать совместимость с некоторым ранее написанным кодом.

Я установил пакет nQ 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 на самом деле, кажется, не возвращает объект, который я ожидаю.

Есть ли способ использовать jQuery с Zombie?

2 ответа

Если ваш сайт уже загружает jquery, вы можете сразу использовать загруженный jQuery, что в некоторых случаях намного проще.

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

Будет работать как положено, так как это объект jQuery.

Я думаю, что вы все равно можете добавить файлы сценариев, чтобы динамически добавлять jQuery и использовать его, как я только что упомянул.

Надеюсь это поможет!

Если страница, с которой вы работаете, не содержит jQuery и вы только получаете данные, попробуйте использовать Cheerio поверх Zombie:

zombie.visit("http://example.com", function () {
  var $ = cheerio.load(browser.html());
  console.log($('title').text());
}
Другие вопросы по тегам