我正在尝试在我的Umbraco设置中允许使用富文本编辑器输入中的javascript。我正在使用Umbraco 7.2。我在tinyMceConfig.config中启用了脚本标记,因此编辑器不再使用我的脚本标记。现在的问题是我的内容被切断了。
例如,在我的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工作吗?
答案 0 :(得分:2)
可能的解决方法是创建一个允许您将脚本插入RTE的宏。宏将有一个Textarea参数,您可以在其中粘贴脚本标记,然后只需将参数值渲染为原始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 Agility Pack,我从张贴到another SO question的答案中获取了代码。
我已经在Umbraco 7.2.1安装上测试了它,即使您选择“在富文本编辑器和网格中渲染”选项,它也能正常工作。
答案 1 :(得分:1)
我的解决方案不是在编辑器中编写直接脚本,在包含
之后将其写入test.js文件中import sys
from fractions import Fraction
import os
#myfile = open('7fractions.txt', 'w')
max = 7 #>2 #THIS VARIABLE DECIDES HOW MANY FRACTIONS ARE ALLOWED
A = [0] * max
A[0] = 1
def printList(A):
return str(A).strip('[]')
def sumList(A):
sum = 0
for i in A:
if i != 0:
sum += Fraction(1, i)
return sum
def sumTest(A):
sum = 0
v = 0
for i in range(0, len(A)):
if A[i] == 0 and v == 0:
v = Fraction(1,A[i-1])
if v != 0:
sum += v
else:
sum += Fraction(1, A[i])
return sum
def solve(n, A):
if n == max - 2:
while (sumTest(A) > 1):
print(A)
if sumList(A) < 1:
e = 1 - sumList(A)
if e.numerator == 1 and e.denominator>A[n-1]:
A[n+1] = e.denominator
#myfile.write(printList(A) + '\n')
print(A)
A[n+1] = 0
A[n] += 1
else:
while (sumTest(A) > 1):
if sumList(A) < 1:
A[n+1] = A[n] + 1
solve(n+1, A)
A[n+1] = 0
A[n] += 1
#execute
solve(0, A)
在 tiniMceConfig.config 文件(config文件夹)中 validElements 标记,添加此
<script src="https:/....test.js></script>
所以它看起来像这样
,script[type|src|language]
测试和工作Umbraco 4.7.x.我不是在测试umbraco 7