方式一:利用系统剪切板实现跨iframe粘贴
以下行为,都可以将内容复制到系统剪切板中
- 通过编辑器Copy()、Cut()接口
- 通过编辑器 内置右键菜单-复制、剪切
- 通过快捷键 ctrl+c / ctrl+x
通过ctrl+v即可实现跨iframe粘贴
方式二:使用内置UI右键菜单实现跨iframe粘贴
需应用配合实现相关功能
- 即应用跨iframe传递了xmlStr、textStr从而实现了跨iframe粘贴
步骤一:应用监听”writeClipboard”事件,得到复制的内容xmlStr、textStr
- 任何写入系统剪切板的形为都会产生”writeClipboard”事件
示例代码:
//监听
ThinkEditor.addEventListener("writeClipboard", this.OnWriteClipboard);
//取得复制的xmlStr、textStr
OnWriteClipboard(e) {
let eventBody = e.data;
console.warn(eventBody);
/************************
* 应用自行将xml、text进行跨iframe管理
* ********************/
global.InnerPasteXmlStr = eventBody.data.xml;
global.InnerPasteTextStr = eventBody.data.text;
/**********************/
}
步骤二:应用监听”innerPaste”事件,接管内置粘贴行为
- 只在内置UI右键菜单-粘贴按钮被触发时,才会产生”innerPaste”事件
- 使用应用系统中保存的xmlStr、textStr进行粘贴
- 粘贴接口为ThinkEditor.InnerPaste()
- 注意:OnInnerPaste()中如果应用成功接管处理[内部粘贴],那么返回值应当为false
示例代码
//监听
ThinkEditor.addEventListener("innerPaste", this.OnInnerPaste);
//进行粘贴
OnInnerPaste(e) {
let eventData = e.data;
if(eventData.handle != "request")
{
return true;
}
/************************
* 注意:只有通过内置右键菜单-粘贴,才会产生"InnerPaste"事件
* ctrl+v 不会产生"InnerPaste"事件
* 应用自行将xml、text进行跨iframe管理
* ********************/
let xmlStr=global.InnerPasteXmlStr;
let textStr=global.InnerPasteTextStr;
let pasteType = eventData.data.pasteType;//含义详见E_PASTE_TYPE
ThinkEditor.InnerPaste(pasteType, xmlStr , textStr);
/************************
* 注意:如果由应用接管了内部粘贴行为,则一定要返回false,表示编辑器内部的粘贴行为中止
* 如果返回true,则会出现粘贴了两次的现象
* ********************/
return false;
}
文档更新时间: 2025-04-23 21:35 作者:admin