我的IBM Domino xPages应用程序中的dojo.js导致某些JS库无法正常工作

时间:2013-06-25 17:29:51

标签: dojo xpages

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

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

有这方面的想法/经验吗?

2 个答案:

答案 0 :(得分:1)

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

请点击此处了解详情:http://hasselba.ch/blog/?p=1216

答案 1 :(得分: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>