Den*_*nis 5 javascript jquery comet
我正在尝试更新旧的cometd javascript包装和测试客户端(是1.3.x),我有更新的彗星2.5.1 javascript实现.我有所有的依赖项,浏览器可以找到它们,但我在Firebug的控制台中遇到错误(见下文)

我的HTML主管如下:
<head>
<title>CometD Tester</title>
<link rel="stylesheet" type="text/css"href="style/style.css" />
<script type="text/javascript" src="org/cometd/Cometd.js"></script>
<script type="text/javascript" src="org/cometd/AckExtension.js"></script>
<script type="text/javascript" src="org/cometd/ReloadExtension.js"></script>
<script type="text/javascript" src="jquery/jquery-1.9.0.js"></script>
<script type="text/javascript" src="jquery/jquery.cookie.js"></script>
<script type="text/javascript" src="jquery/jquery.cometd.js"></script>
<script type="text/javascript" src="jquery/jquery.cometd-reload.js"></script>
<script type="text/javascript" src="js/myCometd.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
所有这些都是由浏览器找到的.看着Cometd.js我看到以下内容:
org.cometd.Cometd = function(name)
{
....
}
Run Code Online (Sandbox Code Playgroud)
那不是定义org吗?请注意,控制台中没有任何错误来自Cometd.js.否则我看不到"org.cometd"的其他定义.如果有人能帮助我,我将非常感激.我使用的是Tomcat 7,以下是dir结构:

谢谢.
更新 - 进一步测试
我将标题缩减为:
<head>
<title>CometD Tester</title>
<link rel="stylesheet" type="text/css"href="style/style.css" />
<script type="text/javascript" src="org/cometd/Cometd.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
并从index.html中删除了所有JS.现在唯一包含的JS是来自comet.org的Cometd.js.仍然存在相同的错误......来自该脚本的第一行:
org.cometd.Cometd = function(name)
Run Code Online (Sandbox Code Playgroud)
不知道我错过了什么.
编辑 - 添加jquery.cometd-reload.js 这是文件的内容.看起来它是来自cometd库的"重新绑定"功能,而不是使用jquery(?).我在JS中没有足够的速度来调试它(我真的是一个C++开发者).
(function($)
{
function bind(org_cometd, cookie, ReloadExtension, cometd)
{
// Remap cometd COOKIE functions to jquery cookie functions
// Avoid to set to undefined if the jquery cookie plugin is not present
if (cookie)
{
org_cometd.COOKIE.set = cookie;
org_cometd.COOKIE.get = cookie;
}
var result = new ReloadExtension();
cometd.registerExtension('reload', result);
return result;
}
if (typeof define === 'function' && define.amd)
{
define(['org/cometd', 'jquery.cookie', 'org/cometd/ReloadExtension', 'jquery.cometd'], bind);
}
else
{
bind(org.cometd, $.cookie, org.cometd.ReloadExtension, $.cometd);
}
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
所以问题是我误解了Comet.org网站的项目布局.我应该更加密切地关注针对非maven设置的cometd primer的发布方向.基本上,当你设置项目时,你下载了发行版,然后你需要从tarball中捆绑的war文件中获取代码.所以,一旦你提取了tarball ......
cometd-javascript-common-2.5.1.war(位于\cometd-2.5.1\cometd-javascript\jquery\target)或cometd-javascript-jquery-2.5.1.war(位于\cometd-2.5.1\cometd-javascript\common\target)中取出org文件夹cometd-javascript-jquery-2.5.1.war组织命名空间定义在org/cometd.js我以前没有的文件中,因为我错误地认为它已被org/cometd/Cometd.js文件替换.命名空间org和comet定义如下从该文件的第17行开始:
// Namespaces for the cometd implementation
this.org = this.org || {};
org.cometd = {};
org.cometd.JSON = {};
Run Code Online (Sandbox Code Playgroud)
功能现在正常工作.
| 归档时间: |
|
| 查看次数: |
1757 次 |
| 最近记录: |