WebBrowser控件具有一个名为“IsWebBrowserContextMenuEnabled”的属性,该属性禁用右键单击网页并查看上下文菜单的所有功能。这非常接近我想要的(我不希望任何人能够右键单击并打印,回击,点击属性,查看源等)。
唯一的问题是这也会禁用TextBoxes中出现的用于复制/粘贴等的上下文菜单。
我想禁用主上下文菜单,但允许显示在TextBoxes中的菜单。谁知道我会怎么做? WebBrowser.Document.ContextMenuShowing事件看起来很有希望,但似乎没有正确识别用户右键单击的元素,通过HtmlElementEventArgs参数的“FromElement”和“ToElement”属性,发送者也不是HtmlDocument元件。
提前致谢!
答案 0 :(得分:2)
CopiedTxt = document.selection.createRange();
CopiedTxt.execCommand("Copy");
并粘贴:
CopiedTxt = document.selection.createRange();
CopiedTxt.execCommand("Paste");
来源:
http://www.geekpedia.com/tutorial126_Clipboard-cut-copy-and-paste-with-JavaScript.html
注意:这仅适用于IE(适用于您的应用程序)。
我知道它无论如何都不是防弹的,但这里有一个代码示例,可以帮助你入门:
<html>
<head>
<script type = "text/javascript">
var lastForm = null;
window.onload = function(){
var menu = document.getElementById("ContextMenu");
var cpy = document.getElementById("CopyBtn");
var pst = document.getElementById("PasteBtn");
document.body.onmouseup = function(){
if (event.button == 2)
{
menu.style.left = event.clientX + "px";
menu.style.top = event.clientY + "px";
menu.style.display = "block";
return true;
}
menu.style.display = "none";
};
cpy.onclick = function(){
copy = document.selection.createRange();
copy.execCommand("Copy");
return false;
};
pst.onclick = function(){
if (lastForm)
{
copy = lastForm.createTextRange();
copy.execCommand("Paste");
}
return false;
};
};
</script>
</head>
<body oncontextmenu = "return false;">
<div id = "ContextMenu" style = "display : none; background: #fff; border: 1px solid #aaa; position: absolute;
width : 75px;">
<a href = "#" id = "CopyBtn" style = "display: block; color : blue; text-decoration: none;">Copy</a>
<a href = "#" id = "PasteBtn" style = "display: block; color : blue; text-decoration: none;">Paste</a>
</div>
sadgjghdskjghksghkds
<input type = "text" onfocus = "lastForm = this;" />
</body>
</html>
答案 1 :(得分:0)
快速查看MSDN documentation表明,您的程序中不支持任何鼠标事件(单击,按钮向下/向上等)。我担心它或者:禁用conetxt菜单,或允许它们。
如果您停用它们,用户仍然可以复制&amp;使用键盘快捷键粘贴(Ctrl-C,Ctrl-V)。也许这可以为您提供所需的功能。
答案 2 :(得分:0)
//Start:
function cutomizedcontextmenu(e)
{
var target = window.event ? window.event.srcElement : e ? e.target : null;
if( navigator.userAgent.toLowerCase().indexOf("msie") != -1 )
{
if (target.type != "text" && target.type != "textarea" && target.type != "password")
{
alert(message);
return false;
}
return true;
}
else if( navigator.product == "Gecko" )
{
alert(message);
return false;
}
}
document.oncontextmenu = cutomizedcontextmenu;
//End:
我希望这能帮助你安德森艾姆斯
答案 3 :(得分:-1)
我们最终结合使用上述两条评论。接近第二,这就是我给他信任的原因。
有一种方法可以替换客户端Web代码上的上下文菜单以及winforms,这是我们采用的方法。我真的不想重写上下文菜单,但这似乎给了我们正确的控制组合。