2013-04-24 86 views
1

在我目前正在开发的sitecore项目中,我们发现我们的页面编辑器不像Vanilla安装的页面编辑器。对于每个占位符,我们必须点击两次才能让编辑专注于该占位符。在第一次点击时,工具栏弹出窗口的焦点将更改为指向我们刚才单击的占位符或子布局,但仅在第二次点击时突出显示该项目。Sitecore页面编辑器Javascript错误

我相信这个行为是由于我们得到的JS错误。错误是:

Uncaught TypeError: Cannot read property 'sc-renderMoreSection' of undefined 
renderTemplate 
Sitecore.PageModes.ChromeControls.Base.extend.renderMoreSection 
Sitecore.PageModes.ChromeControls.Base.extend.updateCommands 
Sitecore.PageModes.ChromeControls.Base.extend.show 
Sitecore.PageModes.SelectionFrame.Sitecore.PageModes.ChromeFrame.extend.showSides 
value 
Sitecore.PageModes.ChromeFrame.Base.extend.show 
Sitecore.PageModes.SelectionFrame.Sitecore.PageModes.ChromeFrame.extend.show  
value 
select 
Sitecore.PageModes.Chrome.Base.extend._clickHandler 
c jquery.noconflict.js:16 
d.event.handle jquery.noconflict.js:16 
k.handle.m 

JS位于生成的脚本,似乎是跨Sitecore安装非常标准。其中,这个错误是发生的方法是

this.renderTemplate = function(templateName, template, data, options) { 
    if (!$sc.template[templateName]) { 
     $sc.template(templateName, template); 
    } 
    return $sc.tmpl(templateName, data, options); 
}; 

!$sc.template[templateName]语句,因为模板是不确定的。

有没有人碰到过类似的东西?任何人有任何想法可能会导致这个问题?

我们正在运行Sitecore的6.5和jQuery 1.7.2

编辑:后解决此问题的一天,我发现了以下内容:

Sitecore的页面编辑器重写我们的jQuery的版本,1.7 .1,我们使用自己的版本1.5.1以无冲突模式运行,它以非冲突模式运行。我们的脚本不会与$$$别名冲突,sitecore也不会与$ sc冲突。最后,我们的$是jquery 1.5.1(这使我感到困惑,因为如果我理解不出现冲突,它应该返回到标准$)。

就页面编辑而言,这应该没有关系。我正在测试我的调整页面不使用依赖于1.7的jQuery。该问题与sitecore页面编辑器脚本包含的“Template”jquery插件有关。由于我无法识别的原因,这个模块不能在页面编辑器中工作,并且是错误的根源。我们的其他Sitecore网站仍然使用本网站包含的网站。删除模板插件会导致其他网站表现我们网站的现状。

此外,Sitecore的包括该脚本的原型为好,但不映射到$

+0

您是否在所有页面或其中一些页面上出现错误?您使用的是什么版本的Sitecore?你在自己的项目中使用jQuery或其他库吗?什么版本? – jammykam 2013-04-24 17:26:54

+0

当页面编辑器处于活动状态时,错误出现在每个页面上。我们使用Sitecore 6.5和jQuery 1.7.2 – 2013-04-24 17:45:54

+0

一些调试步骤可以排除Martijn建议的冲突,在您的代码中删除自己的JavaScript并查看是否仍有错误(因此它只是Sitecore JS)。您应该使用闭包,匿名函数和命名空间来避免冲突:http://blog.navigationarts.com/avoiding-jquerys-noconflict-mode-with-prototype-and-sitecore/ – jammykam 2013-04-24 23:08:47

回答

1

此问题已引起参见由具有共享源模块“分类法”安装的。看起来这个模块对Sitecore 6.5中的页面编辑器不起作用,它会强制加载jQuery,然后调用它没有冲突,将它别名为$ sc。然后,当页面编辑器的脚本实际加载时,$ sc从不会被新的jQuery副本覆盖,因为$ sc不是未定义的。这意味着由编辑器脚本加载的插件不在$ sc变量上,正如人们所期望的那样,这会导致整个系统停止正常工作。

1

尝试使用jQuery在你的代码中NoConflict模式jQuery使用$符号,但Sitecore的同时,可能会导致冲突。

jQuery.noConflict(); 

这样做后,你需要调用jQuery脚本时使用jQuery而不是$或创建一个新的功能,如下面的链接描述中嵌入你的jQuery脚本。

this link

+1

Sitecore 6.5开始使用映射到$ sc的noConflict模式的jQuery,所以它不应该是冲突问题。之前的版本使用Prototype,所以它曾经是$冲突的问题。 – jammykam 2013-04-24 22:13:22

+0

你是对的,这应该已经修复Sitecore版本6.5修订110419. 但是,他得到的错误看起来非常类似于与jQuery noConflict模式相关的错误。所以我应该试试这个。 – 2013-04-25 08:21:35

+1

是的,这也是我的想法,但这就是为什么我问他使用的是什么版本。我认为他需要尝试一些基本的调试步骤来排除问题出在哪里,并且这不会造成伤害。 – jammykam 2013-04-25 12:02:49

相关问题