strophe.flxhr.js - 类型错误:this.func.prependArg 不是函数
Posted
技术标签:
【中文标题】strophe.flxhr.js - 类型错误:this.func.prependArg 不是函数【英文标题】:strophe.flxhr.js - TypeError: this.func.prependArg is not a function 【发布时间】:2015-11-08 10:51:42 【问题描述】:strophe.flxhr.js
/* flXHR plugin
**
** This plugin implements cross-domain XmlHttpRequests via an invisible
** Flash plugin.
**
** In order for this to work, the BOSH service *must* serve a
** crossdomain.xml file that allows the client access.
**
** flXHR.js should be loaded before this plugin.
*/
Strophe.addConnectionPlugin('flxhr',
init: function ()
// replace Strophe.Request._newXHR with new flXHR version
// if flXHR is detected
if (flensed && flensed.flXHR)
Strophe.Request.prototype._newXHR = function ()
var xhr = new flensed.flXHR(
autoUpdatePlayer: true,
instancePooling: true,
noCacheHeader: false);
xhr.onreadystatechange = this.func.prependArg(this);
return xhr;
;
else
Strophe.error("flXHR plugin loaded, but flXHR not found." +
" Falling back to native XHR implementation.");
);
这是一本书提供的代码,我正在尝试从中学习使用 javascript 和 jQuery 进行 XMPP 编程。它还使用strophe.js
和flXHR.js
。 strophe.flxhr.js
用作主应用程序中的脚本文件。但是在我的 FireFox 浏览器中运行该应用程序时,Web 控制台给了我错误 TypeError: this.func.prependArg is not a function
。我也在使用 WebStorm IDE,它显示 Unresolved function or method prependArg()
。但根据这本书,这应该运行。我做错了什么?
请帮忙。谢谢。
【问题讨论】:
【参考方案1】:显然,strophe.flxhr.js
文件存在错误。这是一个非常旧的版本(6 岁)。在 github here 中有一个新版本。
代码有细微的变化,这是有效的。 Web 控制台不会引发任何错误。这是新代码:
strophe.flxhr.js
:
/* flXHR plugin
**
** This plugin implements cross-domain XmlHttpRequests via an invisible
** Flash plugin.
**
** In order for this to work, the BOSH service *must* serve a
** crossdomain.xml file that allows the client access.
**
** flXHR.js should be loaded before this plugin.
*/
Strophe.addConnectionPlugin('flxhr',
init: function (conn)
// replace Strophe.Request._newXHR with new flXHR version
// if flXHR is detected
if (flensed && flensed.flXHR)
Strophe.Request.prototype._newXHR = function ()
var xhr = new flensed.flXHR(
autoUpdatePlayer: true,
instancePooling: true,
noCacheHeader: false,
onerror: function ()
conn._changeConnectStatus(Strophe.Status.CONNFAIL,
"flXHR connection error");
conn._onDisconnectTimeout();
);
xhr.onreadystatechange = this.func.bind(null, this);
return xhr;
;
else
Strophe.error("flXHR plugin loaded, but flXHR not found." +
" Falling back to native XHR implementation.");
);
编辑: 来自此脚本的开发者
Jack Moffitt
: “这段代码不再有效。strophe.flxhr.js 只是让一些测试更容易,因为它通过使用 Flash 放宽了 CORS 要求。现在大多数东西都原生支持 CORS,所以无论如何可能都不需要它。它不提供任何 API或示例代码所需的任何东西;它纯粹是 XMLHttpRequest 的替代实现。如果您可以使较新的版本工作,然后使用它。“。 Here 是对话。
【讨论】:
以上是关于strophe.flxhr.js - 类型错误:this.func.prependArg 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
qvector.h(74) : 错误 C2182: 't' : 非法使用类型 'void'
JWT 库错误:通用类型“ModuleWithProviders<T>”需要 Angular 10 中的 1 个类型参数