MenuItem.contexts
From Opera 15 onward, Opera 11 & 12’s extension format is no longer supported, and instead, we’ve switched to Chromium’s extension model. Check out our new documentation for developing extensions for Opera 15 and higher and start building your own extensions.
Description:
The contexts attribute is used to define the list of contexts that this context menu item will appear in. The list of valid context values for this attribute include all, page, frame, selection, link, editable, image, video and audio. The default value is an array with a single entry of page.
Syntax:
DOMString[] contexts
Example:
The following example creates an item in the context menu to open links in private tabs. In other words, the "Open link in private tab" item will appear only when a link is right-/Ctrl-clicked.
<!--
The configuration file ('config.xml').
-->
<?xml version='1.0' encoding='utf-8'?>
<widget xmlns="http://www.w3.org/ns/widgets">
...
<feature name="opera:contextmenus"/>
...
</widget>
//
// The background process (e.g. index.html)
//
if (opera.contexts.menu) {
var menu = opera.contexts.menu;
// Create a menu item properties object
var itemProps = {
title: 'Open link in private tab',
contexts: ['link'],
onclick: function(event) {
// Create a tab properties object
var tabProps = {
url: event.linkURL,
private: true
};
// Create a tab with the specified properties
var tab = opera.extension.tabs.create(tabProps);
}
}
// Create a menu item with the specified properties
var item = menu.createItem(itemProps);
// Add the menu item to the context menu
menu.addItem(item);
}
This article is licensed under a Creative Commons Attribution 3.0 Unported license.
Comments
-
A little explanation about valid context values would be nice. I could guess which value is related to which menu, but why should I guess. Am I reading specification or what?
-
This is pretty limiting. I'd love to see the ability to show it only on certain elements.
-
+1 on Christoph's suggestion. It would be great to narrow a context menu item to nodes with specific attributes. I created an extension which injects a button to every page. I would like the user to be able to send me some feedback by right-clicking the button and selecting a context menu item, but that item would have to be visible only when right-clicking my injected button.
-
I cannot get a contextMenu item with context of ['editable'] to work in Opera 12.12 (build 1707). This appears to be a Mac only problem as it works fine on Opera 12.12 (build 1707) on Windows 7.
No new comments accepted.Darko Pantić
Friday, August 24, 2012
Christoph
Wednesday, October 24, 2012
e.g. I'm writing an extension that injects some buttons into all web pages. They might cover something on certain websites though, so I need a way to hide them which would be perfect to achieve using the context menu. But therefore it does only make sense to show the entry on those injected elements and not the rest of the page.
Can we get this functionality (i.e. showing on elements with distinct IDs only)?
izydoringwari
Thursday, November 15, 2012
In my opinion the best solution would be by a css selector, so we could narrow the context menu down to a specific element or expand it to a wider group of elements.
xenomonkey
Monday, January 7, 2013