Webアプリケーションの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を「未定義」に設定します。
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を有効にするモードがありますか?
どうやら私はQtWebkitにバージョン534.34を使用しています:
(Pdb)str(QtWebKit.qWebKitVersion()) '534.34'
これによると: https ://trac.webkit.org/changeset/85696/trunk/Source/WebKit/mac/Configurations/Version.xcconfig
リビジョン85696に対応します。上記のバグのコメント(「r95751で修正済み」)と組み合わせると、新しいバージョン、特に535.5よりも優れたバージョンが必要なようです。PyQtのどのバージョンがそれを使用しているかを見つけるために...
ありがとう。