我有一个asp.net应用程序,我必须禁用或将其作为只读添加到上下文菜单中的粘贴选项。但我在网上搜索。我没有得到一个确切的方法。请帮我解决这个问题。提前致谢
答案 0 :(得分:4)
简短的回答是你不能这样做。
用户的浏览器是他们自己的浏览器,因此他们拥有与他们想要的页面进行交互的主权。您可以捕获右键单击事件以防止菜单出现;您可以捕获按键事件以停止注册Ctrl-V(和常常忘记的Shift-Insert)。但是,您无法删除编辑 - >粘贴菜单选项,它在浏览器中工作并完全颠覆Javascript。
更不用说用户可以暂时禁用Javascript,粘贴到字段中,然后根据需要重新启用Javascript。
即使您对这些限制感到满意,也无法修改实际的上下文菜单,只能阻止右键单击注册。
答案 1 :(得分:0)
我想不可能在上下文菜单上禁用单个项目,所以我认为你应该尝试禁用整个上下文菜单,例如。
$(document).bind("contextmenu", function(e) {
e.preventDefault();
});
答案 2 :(得分:0)
∎解决这个棘手问题的另一种方法, 使用JavaScript的面向对象特性
<div class="ro-editable">
<span.....</...
<pre....</...
</div>
<script>
function make_editable_readonly(element){
element.backup_innerHTML = element.innerHTML; /* backup before editable. */
element.contenteditable = "true"; /* editable. CTRL+A is usable (FUN!) */
element.onautocomplete /* what in the world could change the content? actually lot!.. */
= element.onchange
= element.oncontextmenu
= element.oncopy
= element.oncuechange
= element.oncut
= element.ondrag
= element.ondragend
= element.ondrop
= element.onemptied
= element.onkeyup
= element.onmouseup
= element.onpaste
= element.onreset = function restore(){
if (element.innerHTML !== element.backup_innerHTML)
element.innerHTML = element.backup_innerHTML;
};
}
make_editable_readonly(
document.querySelector('div.ro-editable')
);
</script>
∎简单!对? (以及没有 y键事件“过滤”:):