Mura 6.1 $未定义

时间:2015-03-22 16:18:25

标签: jquery mura

我使用jquery v1.8作为我的模板而我使用的是Mura版本6.1,当我尝试加载任何页面时出现上述错误,它出现在此行$.extend(window,mura);

显而易见的是$无法使用它,但我不知道该怎么做以防止这种情况,因为这段代码是由mura动态添加到脚本标签中的每个页面都不是我可以通过在jQuery之后加载来调整的库文件。

详细代码如下includes/display_objects/html_head/global.cfm

var mura={
loginURL:"#variables.loginURL#",
siteid:"#variables.$.event('siteID')#", 
siteID:"#variables.$.event('siteID')#", 
context:"#variables.$.globalConfig('context')#", 
jslib:"#variables.$.getJsLib()#",
assetpath:"#variables.$.siteConfig('assetPath')#",
themepath:"#variables.$.siteConfig('themeAssetPath')#",
htmlEditorType:"#variables.$.globalConfig('htmlEditorType')#",
rb:"#lcase(listFirst(variables.$.siteConfig('JavaLocale'),"_"))#",
#variables.$.siteConfig('JSDateKeyObjInc')#
}
$.extend(window,mura);

我不希望做任何更改,例如用jQuery替换$,因为mura核心文件(如果自定义)和升级时不会保留更改。我尝试用$替换jQuery并且它有效但有一种方法我可以通过自定义我的模板文件或自定义js文件来避免jQuery冲突,所以我不必担心如果我升级Mura并且那些核心文件被覆盖会发生什么。

2 个答案:

答案 0 :(得分:0)

尝试在下面的jQuery代码中使用Immediately-Invoked Function Expression (IIFE),这需要在使用jQuery的任何地方完成,但它会确保没有冲突:



var $ ='blah'; // assign $ to something other than jQuery, like in your enviroment
try{
  alert( $('#test').val() ); // this would break as 'blah' doesnt have a .val() function
  }
catch(err){
  alert('$ is not jQuery in this scope');
  }

(function($) {
   // inside this scope $ will allways be jQuery, even if $ is something else out in the wild
   alert( $('#test').val()+'\n\n This works because $ is protected in this scope' );
    
})(jQuery); //pass jQuery in as the parameter of this IIFE 

// see http://stackoverflow.com/questions/11403266/understanding-vs-jquery-in-iife-instead-of

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test" value="working"/>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我发现,当开发人员尝试在文档的<head>部分之外的某个地方(例如,在结束</body>标记之前)引用jquery.js时会发生这种情况。所以,确保在文档的<head>部分加载了jQuery。是的,Mura会在结束</head>标记之前添加它的JS,但只要您对jquery.js的引用存在,不应该遇到这个问题。

如果那不是问题,那么我会感兴趣的是看到发生这种情况的链接,或者至少发现正在发生的页面的完全呈现的html。