Javascript в веб-приложении выполняет следующий цикл:
for (var name in this) {
if(typeof(this[name]) == "function") {
if((/^on_|^do_/).test(name)) {
console.debug("Adding ", name, " to ", this, "(", this[name], ")");
f = this[name].bind;
console.debug(f);
this[name] = this[name].bind(this);
}
}
}
В Chrome 24.0.1312.56 строка f = this[name].bind
правильно устанавливает для f собственный код function.bind()
, тогда как в моем приложении QWebKit Qt для f устанавливается значение «undefined».
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
Есть идеи, как мне убедить QtWebkit вести себя здесь правильно?
Судя по всему, Function.prototype.bind является частью ECMAScript 5. Его реализация в webkit должна быть описана (исправлена ошибка): https://bugs.webkit.org/show_bug.cgi?id=26382
Возможно, есть режим для включения ECMAScript 5, который мне не хватает?
По-видимому, я использую версию 534.34 для QtWebkit:
(Pdb) ул(QtWebKit.qWebKitVersion()) '534.34'
Что согласно этому: https://trac.webkit.org/changeset/85696/trunk/Source/WebKit/mac/Configurations/Version.xcconfig
Соответствует версии 85696. В сочетании с комментарием к ошибке выше («Исправлено в r95751») кажется, что мне нужна более новая версия, в частности, лучше, чем 535.5. Теперь, чтобы узнать, какая версия PyQt использует это...
Спасибо.