TinyMCE模板不起作用

时间:2015-12-14 14:29:11

标签: json tinymce angular-ui

我按the documentation

中所述配置了TinyMCE编辑器
$scope.tinymceOptions = {
    plugins: 'template',
    templates: '/rest/templates'
}
@RequestMapping(value = "/rest/templates", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public Set<TemplateVO> getTemplates() {
    Set<TemplateVO> result = // ...
    return result;
}

如您所见,在templates选项中,我指定了一个生成模板列表的URL。当用户执行“插入模板”命令时,将调用控制器方法getTemplates(),并在JSON数组中返回所有模板。

[{"title":"test","description":"test","content":"test"},{"title":"test 2","description":"test","content":"test 2"}]

我希望它们会被展示出来。但是我收到一条消息,上面写着“没有定义模板”。

当我指定与对象相同的项目时,模板插入工作正常:

$scope.tinymceOptions = {
    plugins: 'template',
    templates: [
        {title: 'test', description: 'test', content: 'test'},
        {title: 'test 2', description: 'test', content: 'test 2'}
    ]
}

从远程URL加载TinyMCE模板的正确方法是什么?

UPD。我在JSON.parse()内(谷歌浏览器中)警告异常

  

EvalError:拒绝将字符串评估为JavaScript,因为'unsafe-eval'不是以下内容安全策略指令中允许的脚本源:"script-src 'self'"。在eval(本地)Object.parse ...

1 个答案:

答案 0 :(得分:0)

您的Content Security Policy不允许进行JS评估,因为它不安全。您可以将'unsafe-eval'添加到您的CSP,模板加载将起作用:

<!-- Chrome 25+; FireFox 23+; Safari 7+ -->
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval'"/>
<!-- FireFox 4+; IE 10+ (not fully) -->
<meta http-equiv="X-Content-Security-Policy" content="xhr-src 'self' 'unsafe-eval'"/>
<!-- Chrome 14+; Safari 6+ -->
<meta http-equiv="X-WebKit-CSP" content="script-src 'self' 'unsafe-eval'"/>