【问题标题】:Trying to avoid multiple calls to jQuery in a Domino XPage试图避免在 Domino XPage 中多次调用 jQuery
【发布时间】:2017-01-18 03:55:07
【问题描述】:

我正在尝试在一个简单的 Domino XPage 上使用 jQuery 的“DataTables”表插件。

我已经从 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 上准备一个基本表格,并包含必要的 Javascript 来初始化表格...

$(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 插件?任何反馈或建议将不胜感激!

【问题讨论】:

    标签: javascript jquery datatables dojo xpages


    【解决方案1】:

    是的,我一直在 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 加载程序

    有一个 xsn-p 解释了如何删除然后恢复 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(数据表)

    Mark Roden 在他的博客上展示了这一点。我真的不喜欢这样做,但嘿,它有效! https://xomino.com/category/jquery-in-xpages/

    让我知道这是否有效!我希望我是对的,我从来不知道的 javascript...

    【讨论】:

    • 非常感谢卡梅伦!你是正确的,你真的帮助我克服了这个障碍。有趣的是,我记得当他们第一次发布时,我读过其中的几篇博客文章——虽然不熟悉上下文,所以我从来没有想过他们在这里申请。到目前为止,最简单的方法是使用 Sven 的“headTag”资源标签——效果很好(到目前为止)。干杯伙伴!
    • 不用担心特里,我记得在几个不同的博客等上都有同样的感觉。我使用 headTag 和选项 3 修改了很多 javascript,但现在已经开始实施自定义 viewRootrenderer 这样我就不必担心聚合。很高兴它有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多