Javascript 试图避免在DominoXPage中多次调用jQuery

Javascript 试图避免在DominoXPage中多次调用jQuery,javascript,jquery,datatables,dojo,xpages,Javascript,Jquery,Datatables,Dojo,Xpages,我试图在一个简单的DominoXPage上为jQuery使用“”表插件 我已经从CDN加载了两个必需的库 JQuery:ajax.googleapis.com/ajax/libs/JQuery/1.12.4/JQuery.min.js DataTables:cdn.DataTables.net/1.10.13/css/jquery.DataTables.min.css 我还尝试从本地资源加载它们(没有帮助) 然后,我在XPage上准备了一个基本表,并包含初始化该表所需的Javascript $(

我试图在一个简单的DominoXPage上为jQuery使用“”表插件

我已经从CDN加载了两个必需的库

JQuery:ajax.googleapis.com/ajax/libs/JQuery/1.12.4/JQuery.min.js

DataTables:cdn.DataTables.net/1.10.13/css/jquery.DataTables.min.css

我还尝试从本地资源加载它们(没有帮助)

然后,我在XPage上准备了一个基本表,并包含初始化该表所需的Javascript

$(document).ready(function() {
    $('#tableID').DataTable();
} );
当我测试XPage时,我会不断观察

test.xsp:15 Uncaught TypeError: $(...).DataTable is not a function
我已经在几个论坛上搜索过了,普遍的共识是

a) 我以错误的顺序加载了库(没有!)

b) 我已经多次加载jQuery(如何加载?)

我有许多其他使用引导和jQuery的解决方案,以前从未遇到过这个问题。所以,我想我可能会把XPage剥得光秃秃的。通过在“xp.properties”文件中添加以下行,我去掉了页面上的所有Dojo元素

xsp.client.script.libraries=none
这似乎真的管用!我不再注意到这个错误。然而,我的页面看起来不再是应该的(原因很明显!)。我不得不将“xp.properties”文件恢复到其原始状态,但无法找到如何避免错误


是否有人在XPage上成功使用了“DataTables”jQuery插件?任何反馈或建议都将不胜感激

是的,我在XPages中对数据表做了大量的工作,所以它肯定能工作!我知道你的痛苦。。。。 jquery脚本彼此之间的顺序可能没有问题,但是与dojo和它的AMD loader有冲突,因此您有3个选项

备选案文1。在任何xpages脚本之前加载jquery脚本

备选案文2。在jquery脚本之前删除“amd加载程序”,然后在之后恢复它

备选案文3。修改datatables的javascript,使其忽略amd问题

选项1:首先加载jQuery脚本

如果您使用的是资源聚合,那么您可以使用Sven Hasselbach博客中的这个技巧,在这个技巧中,您使用通用的“headTag”资源标记,它将首先加载。

如果您想要一个无论资源聚合设置如何都能工作的解决方案,我在我的博客上有一个示例,您可以在其中创建viewRootRenderer,然后允许您指定您希望在加载其他所有内容之前加载脚本

选项2。在加载脚本之前删除AMD加载程序

有一个xsnippet解释了如何删除然后恢复amd加载程序,以便加载jquery插件

Sven已经为上面的我做了一个类似的解决方案(viewRootRenderer),您可以在其中指定哪些脚本需要禁用amd加载程序,它将为您执行此操作,它在这里提供

选项3:修改jquery插件(datatables)的javascript

马克·罗登在他的博客上展示了这一点。我真的不喜欢这样做,但嘿,它很管用!


让我知道这是否有效!我希望我是对的,使用javascript我永远不知道…

非常感谢Cameron!你是正确的,你真的帮助我克服了这个障碍。有趣的是,我记得在第一次发布的时候,我读了几篇博客文章——虽然不熟悉上下文,所以我从来没有想到他们会在这里申请。到目前为止,最简单的方法是使用斯文的“头标签”资源标签——到目前为止工作得很好。干杯,伙计!不用担心Terry,我记得我在几个不同的博客上都有类似的感觉。我使用了headTag和option 3对javascript进行了很多修改,但现在已经开始实现自定义viewRootrenderer,这样我就不必担心聚合了。很高兴它能帮上忙