Использование 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());
}