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);
}
}
}在Chrome24.0.1312.56下,行f = this[name].bind正确地将f设置为本机代码function.bind(),而在我的QWebKit Qt应用程序中,它将f设置为“未定义”。
你知道我怎么能说服QtWebkit在这里做正确的事吗?
显然,Function.prototype.bind是ECMAScript 5的一部分。
也许有一种模式可以启用我所缺少的ECMAScript 5?
显然,我正在为QtWebkit使用版本534.34:
(QtWebKit.qWebKitVersion()) '534.34‘
根据这个:https://trac.webkit.org/changeset/85696/trunk/Source/WebKit/mac/Configurations/Version.xcconfig
对应于第85696版。结合上述bug中的注释(“在r95751中修复”),我似乎需要一个更新的版本,特别是比535.5更好的版本。现在要找出PyQt的哪个版本使用这个..。
谢谢。
发布于 2013-02-04 20:13:55
PyQt的最新版本(4.9.6-1)似乎是针对wekbit版本534.34编译的。支持Function.prototype.bind的webkit的第一个版本是535.5。
此外,似乎PySite 1.2.2和PyQt 4.9.6-1报告webkit版本535.34,并且没有Function.prototype.bind。
发布于 2013-02-04 19:42:26
尝试使用以下代码,强制您使用Function.prototype.bind
this[name] = Function.prototype.bind.call(this[name], this)在IE中,一些宿主对象在其方法(函数)上没有绑定方法.可能是有关联的。
https://stackoverflow.com/questions/14693946
复制相似问题