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 格式