2010-12-15 41 views

Trả lời

27

Một tùy chọn là replace the context menu với tương đương kích hoạt JavaScript của riêng bạn.

Firefox đã triển khai menu element nơi bạn có thể thêm vào menu ngữ cảnh hiện tại. Nó cũng được triển khai trong Chrome sau một lá cờ. Rất tiếc, tính năng này đã bị removed from the W3C standard do thiếu sự quan tâm thực hiện.

<menu type="context" id="mymenu"> 
    <menuitem label="Refresh Post" onclick="window.location.reload();" icon="/images/refresh-icon.png"></menuitem> 
    <menuitem label="Skip to Comments" onclick="window.location='#comments';" icon="/images/comment_icon.gif"></menuitem> 
    <menu label="Share on..." icon="/images/share_icon.gif"> 
     <menuitem label="Twitter" icon="/images/twitter_icon.gif" onclick="goTo('//twitter.com/intent/tweet?text=' + document.title + ': ' + window.location.href);"></menuitem> 
     <menuitem label="Facebook" icon="/images/facebook_icon16x16.gif" onclick="goTo('//facebook.com/sharer/sharer.php?u=' + window.location.href);"></menuitem> 
    </menu> 
</menu> 

Để tạo thành phần tử, hãy thêm thuộc tính contextmenu="mymenu" vào phần tử đó. Bạn có thể thấy ở đây rằng mymenu khớp với thuộc tính id của phần tử menu.

Source

Demo

+17

Trong năm 2016, tính năng này vẫn chỉ được hỗ trợ bởi firefox: ( – Grief

+6

trong năm 2017 tính năng này vẫn được hỗ trợ bởi firefox :( – faiwer

-1

Bạn không thể sửa đổi ứng dụng của khách hàng sử dụng một trang web. Nếu điều này là có thể, chỉ cần nghĩ về cách tin tặc có thể khai thác máy tính của chúng tôi.

Bạn có thể làm gì, xác định trình đơn tùy chỉnh của riêng bạn, trong khi nhấp chuột phải của người dùng.

Kiểm tra jquery plugin này ví dụ: http://labs.abeautifulsite.net/archived/jquery-contextMenu/demo/

+5

Bạn có thể truy vấn tổ hợp phím và chuột và thay thế chúng bằng chức năng của riêng bạn, tại sao ngữ cảnh Trình đơn khác nhau? – wubbewubbewubbe

+0

@wubbewubbewubbe, OP muốn thêm vào trình đơn Ngữ cảnh của Trình duyệt. Bạn đã đọc về điều đó chưa? Và ví dụ đang liên kết đến, thực hiện chính xác những gì nhận xét của bạn. – Starx

34

trên các trình duyệt hiện đại, bạn có thể thao tác được xây dựng trong menu ngữ cảnh như vậy:

<menu type="context" id="supermenu"> 
<menuitem label="trial" onclick="alert('Smile please')"></menuitem> 
    <menuitem label="rotate" onclick="rotate()" icon="http://cdn1.iconfinder.com/data/icons/silk2/arrow_rotate_clockwise.png"></menuitem> 
    <menuitem label="resize" onclick="resize()" icon="http://cdn3.iconfinder.com/data/icons/fugue/icon/image-resize.png"></menuitem> 
    <menu label="share"> 
    <menuitem label="twitter" onclick="alert('foo')"></menuitem> 
    <menuitem label="facebook" onclick="alert('bar')"></menuitem> 
    </menu> 
</menu> 

<a href='#' contextmenu="supermenu">Right click me</a> 

Để đọc thêm: http://www.w3.org/wiki/HTML/Elements/menu

demo: https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554309

+0

Điều này thực sự gọn gàng Bạn có biết nếu nó có thể được thực hiện để làm việc cho Chrome nữa không? – wubbewubbewubbe

+0

Tôi đã tìm kiếm, tôi nghĩ rằng nó không thể (ít nhất là bây giờ) – wubbewubbewubbe

+10

Chrome là IE6 mới ... hiện tại, nhiều thứ s không được hỗ trợ -> http://caniuse.com/#search=menu – vsync

Các vấn đề liên quan