2015-01-14 12 views
9

Umbracoセットアップのリッチテキストエディタ入力でJavaScriptを許可しようとしています。私はUmbraco 7.2を使用しています。私はtinyMceConfig.configのスクリプトタグを有効にして、エディタがスクリプトタグをもはや食べないようにしました。今問題は、私のコンテンツが途切れていることです。リッチテキストエディタにjavascriptを追加できません

は例えば、私のRTEに私が入れ:

<p>before</p> 
<script> 
alert('blam'); 
</script> 
<p>after</p> 

この取得のTinyMCEので形質転換した:

<p>before</p> 
<script>// <![CDATA[ 
alert('blam'); 
// ]]></script> 
<p>after</p> 

問題はUmbraco.Fieldの値である( "myRte")が終わりますあり:

<p>before</p> 
<script>// <![CDATA[ 
alert('blam'); 
// ]] 

CDATAと関連しているようです。他の誰かがUmbraco 7で働くRTEのJavaScriptを持っていますか?

答えて

1

可能な回避策は、スクリプトをRTEに挿入できるようにするマクロを作成することです。マクロには、スクリプトタグに貼り付けるTextareaパラメータが1つあります。パラメータ値を生のHTMLとしてレンダリングするだけです。ただし、入力をページ上でレンダリングしようとする前に、有効なhtmlであることを確認することをお勧めします。あなたはかみそりのマクロを使用する場合は

部分図は、次のようになります。

@inherits Umbraco.Web.Macros.PartialViewMacroPage 
@{ 
    var script = Model.MacroParameters["script"].ToString(); 
} 

@if (!script.IsNullOrWhiteSpace()) 
{ 
    @Html.ValidateHtml(script) 
} 
ValidateHtmlはMVCのHtmlHelperの拡張メソッドです

public static IHtmlString ValidateHtml(this HtmlHelper helper, string input) 
    { 
     if (!string.IsNullOrEmpty(input)) 
     { 
      var htmlDoc = new HtmlDocument(); 
      htmlDoc.LoadHtml(input); 
      if (htmlDoc.ParseErrors.Count() == 0) 
      { 
       return new MvcHtmlString(input); 
      } 
     } 

     return null; 
    } 

ヘルパーメソッドは、HTML敏捷性を使用していますパックと私はanother SO questionに投稿された回答コードを得た。

私はこれをUmbraco 7.2.1のインストールでテストしました。「リッチテキストエディタとグリッドでレンダリング」オプションを選択してもうまく動作します。

+0

私はこれを回避するために今のところ取り組んでいます。私は "ページスクリプト"のためのドキュメントタイプにプレーンテキストボックスを追加しました。これにより、ユーザーはページ固有のスクリプトを置くことができます。 – jdehlin

0

私のソリューションは、エディタで直接スクリプトを書く

<script src="https:/....test.js></script> 

tiniMceConfig.config ファイル(configフォルダ) validElementsタグの追加、などがその後test.jsファイルに書き込むされていませんこの

,script[type|src|language] 

ので、この

ようになります。

Umbraco 4.7.xでのテストと作業私はumbracoでのテストではありません7

関連する問題