Да, существует проблема в мосте QtWebKit между C ++ и JS для передачи данных вверх и вниз.
Это работает, но лучше от JS до C ++, чем наоборот.
У нас есть ряд вопросов, которые необходимо решить, но это один из самых высоких показателей по спросу.
Тем временем я обычно "украшаю" объект page
следующим образом:
var page = require("webpage").create();
page.evaluateWithParams = function(func) {
var args = [].slice.call(arguments, 1),
str = 'function() { return (' + func.toString() + ')(',
i, ilen, arg;
for (i = 0, ilen = args.length; i < ilen; ++i) {
arg = args[i];
if (/object|string/.test(typeof arg)) {
str += 'JSON.parse(' + JSON.stringify(JSON.stringify(arg)) + '),';
} else {
str += arg + ',';
}
}
str = str.replace(/,$/, '); }');
return this.evaluate(str);
}
И затем вы можете вызвать функцию в области видимости страницы следующим образом:
var a = 1, b = 2;
page.evaluateWithParams(function(arg1, args) {
// your code that uses arg1 and arg2
}, a, b);
Надеюсь, это поможет.
Иван