Sitefinity脚本冲突

时间:2013-01-12 22:15:20

标签: sitefinity sitefinity-5

我正努力让我的jquery在Sitefinity中保持秩序。将Sitefinity小部件拖出到页面上会破坏我的母版页中的脚本链接。

线程已在Sitefinity论坛上启动:http://www.sitefinity.com/developer-network/forums/developing-with-sitefinity-/how-to-adjust-around-sitefinity-scripts#S2PcF40QrkClp_vEDb6cqg

非常感谢任何帮助。我不能成为唯一遇到这个问题的人......

提前谢谢你,

2 个答案:

答案 0 :(得分:2)

使用sf:resourcelinks确保加载jQuery时Sitefinity和RadControls之间没有冲突。

<sf:resourcelinks id="ResourceLinks1" runat="server">
    <sf:ResourceFile JavaScriptLibrary="JQuery" />
</sf:resourcelinks>

使用asp:scriptmanager而不是radscriptmanager。

使用JavascriptEmbedControl在固定位置加载脚本,以确保在混合匹配加载外部和内联脚本时加载文件

<sf:JavaScriptEmbedControl
    id="script1"
    runat="server"
    scriptembedposition="InPlace"
    url="somescript.js" 
/>

有关加载jQuery的最佳方法的更多信息,请查看此forum thread。在使用JavascriptEmbedControl icw VisualStudio时,请阅读here以获取免责声明。

答案 1 :(得分:0)

您可以使用jQuery noConflict()来解决您的情况。

加载你的jQuery文件,然后将所有依赖于jQuery版本的库包含在另一个之下。

Example:

include jQuery 1.11
include Bootstrap jQuery plugin
include Response.js
so on.,

当所有依赖库在jQuery版本下面一个接一个地添加时...当前$ scope中的jQuery版本将用于初始化库。因此,您可以按预期使用jQuery版本来包含/增强您的依赖库。 万岁!!

然后最终允许Sitefinity RAD控件和小部件与CMS jQuery版本一起正常工作,您需要将jQuery对象完全移动到其他变量名称,如下所示。

jq1_11 = $.noConflict(true);

然后在您的自定义脚本中使用jq1_11而不是$或jQuery。

OR

如果你仍然喜欢使用$,那么请使用如下的匿名函数来关闭闭包模式。

(function($){
     $("#id").on("click", handlerFn);
})(jq1_11);

下行: 有些人会抱怨使用2个版本的jQuery,但这只发生在

期间

内联编辑或 当RAD控件在页面或 在sitefinity后端

上行: 你可以使用你最新的图书馆和最新的jQuery