尝试避免在 Domino XPage 中多次调用 jQuery
Trying to avoid multiple calls to jQuery in a Domino XPage
我正在尝试在简单的 Domino XPage 上使用 jQuery 的“DataTables”table 插件。
我已经从 CDN 加载了两个必需的库...
JQuery: ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
数据表:cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css
我也试过从本地资源加载它们(没有帮助)。
然后我在我的 XPage 上准备一个基本的 table,并包含必要的 Javascript 来初始化 table...
$(document).ready(function() {
$('#tableID').DataTable();
} );
当我测试 XPage 时,我不断观察
test.xsp:15 Uncaught TypeError: $(...).DataTable is not a function
我搜索了几个论坛,普遍的共识是...
a) 我以错误的顺序加载了库(不!)
b) 我加载了 jQuery 不止一次(如何?)
我有许多其他使用 Bootstrap 和 jQuery 的解决方案,并且以前从未 运行 解决过这个问题。因此,我认为我可能会将 XPage 剥离回裸露的骨头。我通过将以下行添加到 'xp.properties' 文件来删除页面上的所有 Dojo 元素...
xsp.client.script.libraries=none
这似乎真的奏效了!我不再观察到错误。然而,我的页面不再像它应该的那样(原因很明显!)。我必须将 'xp.properties' 文件恢复到其原始状态,但找不到如何避免该错误。
有没有人在 XPage 上成功使用 'DataTables' jQuery 插件?如有任何反馈或建议,我们将不胜感激!
是的,我一直在 XPages 中的 DataTables 上做了大量工作,所以它绝对有效!虽然我知道你的痛苦......
您的 jquery 脚本彼此之间的顺序可能没问题,但是与 dojo 有冲突,它是 AMD 加载程序,因此您有 3 个选项。
选项 1. 在任何 xpages 脚本之前加载您的 jquery 脚本
选项 2. 删除 jquery 脚本之前的 'amd loader',然后在
之后恢复它
选项 3. 修改数据表的 javascript,使其忽略 amd 问题
选项 1:首先加载您的 jQuery 脚本
如果您正在使用资源聚合,您可以使用 Sven Hasselbach 博客中的这个技巧,在其中您使用通用 'headTag' 资源标签,它将首先加载。
http://hasselba.ch/blog/?p=1181
如果您想要一个无论资源聚合设置如何都可以工作的解决方案,我在我的博客上有一个示例,您可以在其中创建一个 viewRootRenderer,然后允许您指定要在其他所有内容之前加载脚本
http://camerongregor.com/2016/09/19/controlling-the-order-of-script-resources-e-g-jquery-with-a-custom-viewrootrenderer/
选项 2. 在加载脚本之前删除 AMD 加载程序
有一个 xsnippet 解释了如何删除然后恢复 amd 加载器,以便加载 jquery 插件
https://openntf.org/xsnippets.nsf/snippet.xsp?id=hack-to-use-jquery-amd-widgets-and-dojo-together
Sven 已经制定了一个与我上面类似的解决方案 (viewRootRenderer),您可以在其中指定哪些脚本需要禁用 amd 加载程序,它会为您执行此操作,可在此处获得
http://hasselba.ch/blog/?p=2070
选项 3:修改 jquery 插件(数据表)的 javascript
马克罗登在他的博客上展示了这一点。我真的不喜欢这样做,但嘿,它有效!
https://xomino.com/category/jquery-in-xpages/
让我知道这是否有效!我希望我是对的,javascript 我永远不知道...
我正在尝试在简单的 Domino XPage 上使用 jQuery 的“DataTables”table 插件。
我已经从 CDN 加载了两个必需的库...
JQuery: ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
数据表:cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css
我也试过从本地资源加载它们(没有帮助)。
然后我在我的 XPage 上准备一个基本的 table,并包含必要的 Javascript 来初始化 table...
$(document).ready(function() {
$('#tableID').DataTable();
} );
当我测试 XPage 时,我不断观察
test.xsp:15 Uncaught TypeError: $(...).DataTable is not a function
我搜索了几个论坛,普遍的共识是...
a) 我以错误的顺序加载了库(不!)
b) 我加载了 jQuery 不止一次(如何?)
我有许多其他使用 Bootstrap 和 jQuery 的解决方案,并且以前从未 运行 解决过这个问题。因此,我认为我可能会将 XPage 剥离回裸露的骨头。我通过将以下行添加到 'xp.properties' 文件来删除页面上的所有 Dojo 元素...
xsp.client.script.libraries=none
这似乎真的奏效了!我不再观察到错误。然而,我的页面不再像它应该的那样(原因很明显!)。我必须将 'xp.properties' 文件恢复到其原始状态,但找不到如何避免该错误。
有没有人在 XPage 上成功使用 'DataTables' jQuery 插件?如有任何反馈或建议,我们将不胜感激!
是的,我一直在 XPages 中的 DataTables 上做了大量工作,所以它绝对有效!虽然我知道你的痛苦...... 您的 jquery 脚本彼此之间的顺序可能没问题,但是与 dojo 有冲突,它是 AMD 加载程序,因此您有 3 个选项。
选项 1. 在任何 xpages 脚本之前加载您的 jquery 脚本
选项 2. 删除 jquery 脚本之前的 'amd loader',然后在
之后恢复它选项 3. 修改数据表的 javascript,使其忽略 amd 问题
选项 1:首先加载您的 jQuery 脚本
如果您正在使用资源聚合,您可以使用 Sven Hasselbach 博客中的这个技巧,在其中您使用通用 'headTag' 资源标签,它将首先加载。 http://hasselba.ch/blog/?p=1181
如果您想要一个无论资源聚合设置如何都可以工作的解决方案,我在我的博客上有一个示例,您可以在其中创建一个 viewRootRenderer,然后允许您指定要在其他所有内容之前加载脚本 http://camerongregor.com/2016/09/19/controlling-the-order-of-script-resources-e-g-jquery-with-a-custom-viewrootrenderer/
选项 2. 在加载脚本之前删除 AMD 加载程序
有一个 xsnippet 解释了如何删除然后恢复 amd 加载器,以便加载 jquery 插件 https://openntf.org/xsnippets.nsf/snippet.xsp?id=hack-to-use-jquery-amd-widgets-and-dojo-together
Sven 已经制定了一个与我上面类似的解决方案 (viewRootRenderer),您可以在其中指定哪些脚本需要禁用 amd 加载程序,它会为您执行此操作,可在此处获得 http://hasselba.ch/blog/?p=2070
选项 3:修改 jquery 插件(数据表)的 javascript
马克罗登在他的博客上展示了这一点。我真的不喜欢这样做,但嘿,它有效! https://xomino.com/category/jquery-in-xpages/
让我知道这是否有效!我希望我是对的,javascript 我永远不知道...