2017-03-17 356 views
1

我试图用附加功能来定制TinyMCE。
我想添加两个菜单项 - 粘贴HTML并复制HTML。TinyMCE从剪贴板复制和粘贴源代码

里面setup我添加两个菜单项:

editor.addMenuItem('htmlPaste', { 
    text: 'Paste HTML', 
    icon: 'paste', 
    context: 'file', 
    onclick: function() { 
    tinymce.activeEditor.setContent('<span>some</span> html'); 
    editor.notificationManager.open({ 
     text: 'HTML pasted.', 
     type: 'info', 
     timeout: 2000, 
     closeButton: false 
    }); 
    } 
}); 
editor.addMenuItem('htmlCopy', { 
    text: 'Copy HTML', 
    icon: 'copy', 
    context: 'file', 
    onclick: function() { 
    editor.notificationManager.open({ 
     text: 'HTML copied.', 
     type: 'info', 
     timeout: 2000, 
     closeButton: false 
    }); 
    } 
}); 

部分缺少的是剪贴板访问。我正在考虑使用clipboard.js,但我意识到TinyMCE具有这种内置,但它复制并粘贴普通内容而不是HTML源代码。

我可以使用TinyMCE的内置功能来访问剪贴板吗?所以当我点击Paste HTML TinyMCE会更新内容的底层源代码,当我点击Copy HTML时,TinyMCE会将源代码复制到剪贴板(在设置剪贴板内容之前,我想添加一些修改(替换标签))。

我想使用此功能,因为TinyMCE在用户禁用剪贴板访问时支持回退功能。

这里是我的原型上codepen:http://codepen.io/anon/pen/EWbpyr

编辑: 展望通GitHub上,我发现了一些有用的功能,如setClipboardData但我仍然不知道如何把它从我的代码中调用。

回答

0

我不认为你能够在大多数现代浏览器上做你想做的事情。

如果您尝试使用内置的剪切/复制/粘贴按钮TinyMCE的你看到这对大多数的浏览器:

“您的浏览器不支持剪贴板的直接访问,请 使用。而不是Ctrl + X/C/V键盘快捷键。“

正如来自编辑器的消息指出的,这仅仅是您在某些浏览器中可以/不可以直接通过JavaScript执行操作的限制。

想象一下,如果您的任意JavaScript可以在喜欢的时候访问剪贴板,您可以做些什么? “坏人”不会按照规则玩游戏,那么如果(在加载网页时)他们拥有JavaScript,抓取剪贴板上的所有内容并将其发送到他们的服务器?随着时间的推移,浏览器制造商意识到直接访问剪贴板是“不好的”......通过让用户键入CRTL + C和CRTL + V,您可以有效地告诉浏览器您希望它访问剪贴板。

IE11确实允许通过传统API访问,但Edge目前根本不支持剪贴板API(至少在我没有写这个的时候)。

+0

感谢您的回复,我知道我无法获取剪贴板内容,但可能我可以设置剪贴板内容。我可以显示'工具 - >源代码',并允许用户粘贴他的剪贴板中的源代码。但还有第二部分,我希望能够使用按钮,菜单项或键盘快捷方式复制HTML内容。我知道用户可以到'Tools-> Source code'并将其复制到那里,但我想替换一些标签,所以我不能使用该面板。我只是检查最新的Chrome浏览器,并且如您所写的粘贴不起作用,但复制选项会。 – Misiu