Я пытаюсь создать инструмент с помощью nw.js, который может открыть окно веб-сайта, загрузить библиотеку jQuery и запустить скрипт с параметрами, например. подтвердите текст заголовка страницы и верните результаты обратно в основной сценарий. Может ли кто-нибудь дать образец действительного кода?Утилита для тестирования веб-сайта node-webkit
0
A
ответ
0
Я пытаюсь сделать это, когда я открываю обычное окно и пытаюсь позвонить win.eval
, как он говорит в documentation, он не работает. Но я могу получить доступ ко всем дочерним окнам.
Я нахожу, что есть опция: inject-js-end, это позволяет нам вводить локальный файл на страницу.
Этот пример файла я впрыснуть:
// checker.js
// this file will run in newly opened page.
console.log("checker loaded");
window.myChecker = {
listeners: [],
done: function (callback) {
if (this.result) callback(this.result);
else this.listeners.push(callback);
},
start: function() {
this.result = {a: 123, title: document.title};
this.listeners.forEach(function (fn) { fn(this.result); });
}
};
myChecker.start();
Тогда мы можем открыть любой URL и ввести нашу шашку:
var win = gui.Window.open('https://github.com', {
show: true, // make it false to make window hidden
"inject-js-end": "./checker.js"
});
win.on('loaded', function() {
console.log("window loaded");
win.window.myChecker.done(function (result) {
console.log("Result is", result);
});
});
Вы должны быть в состоянии увидеть что-то вроде:
[87518:0301/142832:INFO:CONSOLE(1)] ""checker loaded"", source: (1)
[87518:0301/142835:INFO:CONSOLE(107)] ""window loaded"", source: file:///my_path/index.js (107)
[87518:0301/142835:INFO:CONSOLE(109)] ""Result is" {"a":123,"title":"GitHub \u00B7 Build software better, together."}", source: file:///my_path/index.js (109)
Возможно, вы хотите добавить jQuery в checker.js
и сделать несколько разных вещей, поэтому лучше m ake он возвращает результат асинхронный.
Я использую «inject-js-end», чтобы убедиться, что все содержимое готово в момент запуска проверки, также может работать с «inject-js-start».