aardio 文档
aardio 范例: web.form - 自定义右键菜单
菜单事件 | 菜单命令
//菜单事件: https://www.aardio.com/zh-cn/docs/library-guide/std/web/form/event.html#showMenu
//菜单命令: https://developer.mozilla.org/docs/Web/API/Document/execCommand
import win.ui;
/*DSG{{*/
var winform = win.form(text="web.form - 自定义右键菜单";right=892;bottom=566;scroll=1)
winform.add()
/*}}*/
import web.form;
var wb = web.form( winform );
wb.html = /**
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<style type="text/css">
html,body{ height:100%; margin:0; }
</style>
<script type="text/javascript"></script>
</head>
<body>
选中文本,然后点右键
</body>
</html>
**/
wb.script = /***
function getSelectionObject() {
if (window.getSelection) {
// 现代浏览器及 IE9+ 标准写法
var sel = window.getSelection();
// 如果没有选区,或者选区为空,直接返回 null
if (sel.rangeCount === 0 || sel.toString() === "") {
return null;
}
var range = sel.getRangeAt(0);
var obj = {};
// 高版本浏览器直接定义 text 属性,完美桥接 COM
Object.defineProperty(obj, "text", {
get: function() {
return sel.toString();
},
set: function(newText) {
range.deleteContents();
range.insertNode(document.createTextNode(newText));
},
enumerable: true
});
return obj;
} else if (document.selection && document.selection.type != 'Control') {
// 老版本 IE (IE8 及以下) 专有写法
var range = document.selection.createRange();
// 如果没有选中文字,直接返回 null
if (range.text === "") {
return null;
}
// IE8 的 range 天生自带可读写的 .text 属性,直接原样返回给 aardio!
return range;
}
return null;
}
***/
import web.form.menu;
wb.showMenu = function(x,y,id,ele){
if(id!==4/*_CONTEXT_MENU_TEXTSELECT */){
return true; //弹出默认菜单
}
web.form.menu( wb, {
[4/*_CONTEXT_MENU_TEXTSELECT */] = {
{ "剪切";"Cut" };
{ "复制";"Copy" };
{ "粘贴";"Paste" };
{ "删除";"Delete" };
{ "修改";function(id,hwnd,ele,x,y){
var range = wb.script.getSelectionObject();
if(!range) return;
range.text = range.text + " | 已修改"
} };
};
} ).popup(x,y,id,ele);
return false; //取消默认菜单
}
winform.show();
win.loopMessage();
Markdown 格式