2013-04-24 89 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

相關問題