未调用输入onclick函数

时间:2015-03-18 15:01:39

标签: ckeditor

为了测试按钮的行为,我创建了一个插件,在编辑器文本中插入了一个type =“button”的输入元素。最后,当我点击该插入按钮时,应弹出警报。按预期插入input元素时,永远不会调用alert()。但很奇怪,在插入元素之前不久就会调用alert()。这是执行命令时将触发的函数

...
exec: function( editor ) {
var linkHtml = '<input type="button" value='+"click me"+' onclick="'+alert("hello you clicked a button")+'"></input>';
var linkElement = CKEDITOR.dom.element.createFromHtml(linkHtml, editor.document);
editor.insertElement(linkElement);
}
...

任何暗示这里发生了什么?

1 个答案:

答案 0 :(得分:1)

var linkHtml = '<input type="button" value='+"click me"+' onclick="'+alert("hello you clicked a button")+'"></input>';

此代码:

  1. 创建字符串'<input type="button" value='+"click me"+' onclick="'
  2. 执行 alert("hello you clicked a button")并将结果附加到上一个字符串。因此alert()立即执行。
  3. '"></input>'附加到上一个字符串。
  4. 所以正确的代码是:

    var linkHtml = '<input type="button" value='+"click me"+' onclick="alert(\'hello you clicked a button\')"></input>';
    

    但是,CKEditor在处理内容时会转换所有on*属性,因为在编辑时不应执行它们。因此,如果您想在编辑器中单击<input>,那么您需要采用不同的方式。请参阅此问题CKEditor's click event not firing