位。 如果我保存
<body onload="alert('test');">
重新加载到数据库时,代码将运行并触发浏览器警报。我希望CKeditor在保存之前向文本添加一些格式,以便它不能在加载时运行。 This个帖子与切向相关,但不完全相关。 干杯
答案 0 :(得分:0)
首先,您需要对数据进行编码(将其作为最佳实践进行处理)。从CKEditor的角度来看,您只能使用htmlEncodeOutput,但是正如@ TiiJ7解释的那样,您还应确保服务器端代码将编码后的数据返回给CKEditor。编码是指将特殊的HTML字符更改为如下所示的实体(就像ckeditor/samples/old
中的每个示例一样):
<html>
<head>
<meta charset="utf-8">
</head>
<body onload="alert('test');">
</body>
</html>
除了最佳实践之外,令我惊讶的一件事是,为什么在您的情况下执行此alert
。我问是因为即使您在源代码模式下粘贴了未编码的HTML(甚至加载了这样的HTML),也是如此:
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body onload="alert('test');"> </body>
</html>
,然后切换到所见即所得模式,您将不会收到任何alert
消息,因为它将自动放入data-cke-pa-onload
属性中。您可以在每晚样本http://nightly.ckeditor.com/18-06-25-06-04/full/samples/old/wysiwygarea/fullpage.html中和以下屏幕截图中进行验证。
您是否正在使用导致该问题的第三方插件,或者您已经自定义了CKEditor,以便可以立即执行警报?在这种情况下,使用最新版本和默认版本可能会有所帮助。