【问题标题】:Disable right-click menu on WebView禁用 WebView 上的右键单击菜单
【发布时间】:2013-08-23 08:17:56
【问题描述】:

嗯,这正是我需要做的:

当用户右键单击WebView 时,典型的菜单(没有“重新加载”等)应该显示出来。

如何做到这一点?有什么想法吗?


P.S.另外:是否有可能显示自定义菜单?

【问题讨论】:

标签: objective-c macos cocoa webview


【解决方案1】:

用html阻止上下文菜单很简单:

<body oncontextmenu="return false;">

或使用 javascript (jquery):

$(document).bind(“contextmenu”, function (e) {
    e.preventDefault();
});

或者,如果您想使用 javascript 显示自定义 html 上下文菜单...

HTML:

<div id="context-menu">                        
    <ul>                        
      <li>Item1</li>                      
      <li>Item2</li>
      <li>Item3</li>
    </ul>
</div>
<div id="op">Right click anywhere!</div>

CSS:

#context-menu {
    display: none;        
    position: fixed;       
    border: 1px solid #ddd;
    background: white;
    box-shadow: 2px 2px 1px grey;  
}
#context-menu ul {
    list-style: none;      
    padding: 0;
    margin: 0;
}
#context-menu li {
    width:150px;
    padding: 5px 8px;
}
#context-menu li:hover {
    background:#eaeaea;
    cursor:pointer;
}

JS:

function startFocusOut() {
    $(document).on("click", function () {   
        $("#context-menu").fadeOut(20);              // To hide the context menu
        $(document).off("click");           
    });
}
$(function(){
    $(document).bind("contextmenu", function (e) {
        e.preventDefault();            // To prevent the default context menu.
        $("#context-menu").css("left", e.pageX);   // position with cursor
        $("#context-menu").css("top", e.pageY);    
        $("#context-menu").fadeIn(20, startFocusOut()); // show the menu
    });    
    $("#context-menu li").click(function () {
        $("#op").text("You have selected " + $(this).text());  // Performing the selected function.
    });
});

Jsfiddle:http://jsfiddle.net/VRy93/

【讨论】:

  • 花了我一些时间才需要同样的东西,才发现你迟到的回复......我自己的问题。问题是:它就像一个魅力!谢谢! ;-)
猜你喜欢
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2019-12-17
  • 2019-05-11
相关资源
最近更新 更多