2

我的 xPages 应用程序中的 dojo.js 会导致某些 JS 库无法在页面上运行……我们使用 JQuery,它可以与 dojo 一起正常工作,但例如 jquery.cookie.js ( https://github.com/carhartl/jquery-cookie )不能当 dojo.js 可用时工作。URI.js 库(http://medialize.github.io/URI.js/)也是如此……当 dojo.js 在页面上运行时,它不起作用。为了调试,我创建了一个简单的页面(不是 xpage,因为 xpage 包含 dojo),当 dojo.js 可用时,这些库不起作用。删除 dojo 库会导致这些库按预期工作。

环境:Domino 9 服务器意味着 Dojo Toolkit 1.8.1

对此有任何想法/经验吗?

4

2 回答 2

1

我没有使用其他 jQuery 库的经验,只有 jQuery Mobile 和 Dojo 1.8,但问题可能是相同的,并且是由 Dojo 的 AMD 加载程序引起的。尝试在任何 Dojo 库之前加载 jQuery 内容。这解决了我的问题。

有关详细信息,请参见此处:http ://hasselba.ch/blog/?p=1216

于 2013-06-26T06:15:43.247 回答
0

有关同时使用 jQuery 和 Dojo 的提示,请参阅https://www.ibm.com/developerworks/community/blogs/94e7fded-7162-445e-8ceb-97a2140866a9/entry/loading_jquery_with_dojo_1_7_amd_loader2?lang=en

对于 xPages:添加到 XSP 属性:

xsp.client.script.dojo.djConfig=async:true

创建一个包含以下内容的脚本库:

define.amd.jQuery = true;

并将其作为资源添加到您的 xPage 中。

下面是 xPage 代码:

<xp:this.properties>
        <xp:parameter name="xsp.client.script.dojo.djConfig" value="packages: exPackages" />
    </xp:this.properties>
    <xp:this.beforePageLoad>
    <![CDATA[#{javascript:
        var exCon = facesContext.getExternalContext();
        var response = exCon.getResponse();
        var writer = response.getWriter();
        writer.write("<script>\n");
        writer.write("var exPackages=[{name:'jquery',location:'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1',main:'jquery'}]\n");
        writer.write("</script>\n");
        }]]>
    </xp:this.beforePageLoad>
    <xp:this.resources>
        <xp:script src="/jquery.js" clientSide="true"></xp:script>
        <xp:dojoModule name="jquery"></xp:dojoModule>
    </xp:this.resources><p id="test">Egor Margineanu</p>
<xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="false">
        <xp:this.script><![CDATA[alert($("#test").text());]]></xp:this.script>
    </xp:eventHandler></xp:button>
于 2013-06-26T06:41:19.053 回答