2015-02-27 2 views
0

Я пытаюсь создать инструмент с помощью nw.js, который может открыть окно веб-сайта, загрузить библиотеку jQuery и запустить скрипт с параметрами, например. подтвердите текст заголовка страницы и верните результаты обратно в основной сценарий. Может ли кто-нибудь дать образец действительного кода?Утилита для тестирования веб-сайта node-webkit

ответ

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».