【问题标题】:Can't add javascript to rich text editor无法将 javascript 添加到富文本编辑器
【发布时间】:2015-07-23 11:21:53
【问题描述】:

我正在尝试在我的 Umbraco 设置中允许在富文本编辑器输入中使用 javascript。我正在使用 Umbraco 7.2。我在 tinyMceConfig.config 中启用了脚本标签,因此编辑器不再吃掉我的脚本标签。现在的问题是我的内容被截断了。

例如,在我的 RTE 中,我输入了:

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

TinyMCE 将这个 get 转换为:

<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?

【问题讨论】:

    标签: tinymce umbraco umbraco7


    【解决方案1】:

    一种可能的解决方法是创建一个允许您将脚本插入 RTE 的宏。该宏将有一个 Textarea 参数,您可以将其粘贴到脚本标记中,并且您只需将参数值呈现为原始 Html。但是,在尝试在页面上呈现之前检查输入是否为有效的 html 可能是个好主意。

    如果您使用 razor 宏,部分视图可能如下所示:

    @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 Agility Pack,我从发布到 another SO question 的答案中获得代码。

    我已经在 Umbraco 7.2.1 安装上对此进行了测试,即使您选择“在富文本编辑器和网格中渲染”选项,它也能正常工作。

    【讨论】:

    • 我现在正在做与此类似的事情。我在“页面脚本”的文档类型中添加了一个纯文本框。这允许用户将特定于页面的脚本放入。
    【解决方案2】:

    我的解决方案不是直接在编辑器中编写脚本,而是在包含之后将其写入 test.js 文件中

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

    tiniMceConfig.config 文件中(配置文件夹) validElements 标签,添加这个

    ,script[type|src|language]
    

    所以它看起来像这样

        <![CDATA[+a[id|style|rel
    .....
    ,bdo,button,script[type|src|language]]]>
    

    在 Umbraco 4.7.x 上进行测试和工作。我没有在 umbraco 7 上进行测试

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多