首页 文章

TinyMCE从剪贴板复制并粘贴源代码

提问于
浏览
1

我正在尝试使用其他功能来定制TinyMCE .
我想在菜单中添加两个额外的项目 - 粘贴HTML和复制HTML .

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

EDIT: 通过GitHub查找我发现了一些有用的函数,如setClipboardData,但我仍然不知道如何从我的代码中调用它 .

1 回答

  • 0

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

    如果您尝试使用TinyMCE中的内置剪切/复制/粘贴按钮,您会在大多数浏览器中看到这一点:

    “您的浏览器不支持直接访问剪贴板 . 请改用Ctrl X / C / V键盘快捷键 . ”

    正如来自编辑器的消息所说,这仅仅限制了某些浏览器中您可以/不能直接通过JavaScript执行的操作 .

    想象一下,如果您的任意JavaScript可以随时访问剪贴板,您可以做什么? “糟糕的人”不遵守规则,所以如果(在加载网页时)他们有JavaScript从剪贴板中抓取所有东西并将其发送到他们的服务器?随着时间的推移,浏览器制造商意识到直接访问剪贴板是“糟糕的”......通过让用户键入CRTL C和CRTL V,您实际上是在告诉浏览器您希望它访问剪贴板 .

    IE11确实允许通过旧版API进行访问,但Edge目前根本不支持剪贴板API(至少在我写这篇文章时不支持) .

相关问题