Im trying to add a new item to the Context Menu in firefox after right clicking an image.
I already read the docs in the webpage of Mozilla.
in the XUL file i have this code:
<?xml version="1.0"?>
<overlay id="emailpicture" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://firefoxextension/content/emailpicture.js"/>
<popup id="contentAreaContextMenu">
<menuitem id="emailpicture" label="Email This Image" oncommand=""/>
</popup>
</overlay>
In the chrome.manifest i have this code:
overlay chrome://browser/content/browser.xul chrome://firefoxextension/content/myext.xul
When i run Firefox, it didn't add any item.
it seems like Firefox doesn't even run myext.xul.
what am i doing wrong ?
It's <menupopup id="contentAreaContextMenu">, not popup
Related
I am using Shell in my App to handle navigation between views and its FlyoutMenu works perfectly on Android as can be seen here:
Screenshot of FlyoutMenu on Android
However, when I open the Flyout on iOS it looks completely different (and wrong):
Screenshot of FlyoutMenu on iOS
This is the code I have in my AppShell.xaml:
<?xml version="1.0" encoding="utf-8" ?>
<Shell xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="CMApp.AppShell"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Cargomando"
xmlns:pages="clr-namespace:CMApp"
xmlns:resources="clr-namespace:CMApp.Resources"
FlyoutBackgroundColor="LightGray">
<Shell.Resources>
<ResourceDictionary>
</ResourceDictionary>
</Shell.Resources>
<Shell.FlyoutHeader>
<Image Source="cargomando.png"/>
</Shell.FlyoutHeader>
<FlyoutItem Title="{x:Static resources:Tour.TitleString}">
<Tab>
<ShellContent>
<pages:TourList/>
</ShellContent>
</Tab>
</FlyoutItem>
<FlyoutItem Title="{x:Static resources:Settings.TitleString}">
<Tab>
<ShellContent>
<pages:Settings/>
</ShellContent>
</Tab>
</FlyoutItem>
<MenuItem Text="{x:Static resources:Footer.PrivacyProtection}" Command="{Binding PrivacyProtectionCommand}"/>
<MenuItem Text="{x:Static resources:Footer.Imprint}" Command="{Binding ImprintCommand}"/>
<MenuItem Text="DEBUG: Tracking stoppen" Command="{Binding StopTrackingCommand}"/>
</Shell>
What am I doing wrong that it works fine on Android but not on iOS? Thanks!
During creation of a sample application for Lucas Zhang I noticed that the sample application works fine. After comparing my App and the sample after some digging I noticed that the problem is caused by defining a global style for Grid in my ResourceDictionary of my App.xaml. Xamarin apparently uses a Grid for the elements in the FlyoutMenu to which my style with a pretty large HeightRequest gets applied but this seemingly only happens on iOS.
I need to do a simple task but it looks like very heavy for me, i need to create XULRUNNER system which opens WWW.test.com in default window without address bar or any menu and nothing more, here are my codes but it doesn't seem to be working, can anybody help?
main.js
function url() {
windowObjectReference = window.open("http://www.test.com/", "test_WindowName", strWindowFeatures);
}
main.xul
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="main" title="My App" width="500" height="500" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="chrome://myapp/content/main.js"/>
</window>
pref.js
pref("toolkit.defaultChromeURI", "chrome://myapp/content/main.xul");
pref("toolkit.defaultChromeFeatures", "chrome,dialog=no,all");
pref("toolkit.singletonWindowType", "xulmine");
/* debugging prefs, disable these before you deploy your application! */
pref("browser.dom.window.dump.enabled", true);
pref("javascript.options.showInConsole", true);
pref("javascript.options.strict", true);
pref("nglayout.debug.disable_xul_cache", true);
pref("nglayout.debug.disable_xul_fastload", true);
Just use the <browser> element
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="main" title="My App" width="500" height="500" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="chrome://myapp/content/main.js"/>
<vbox id="browerbox" flex="1">
<browser flex="1" id="testbrowser" src="http://www.test.com/ />
</vbox>
</window>
The browser is very powerful element I would read up on all Attributes, Properties and Methods that you can use with it, https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/browser. What I gave you above will work but depending on what you ultimately need to do, you may need make a few changes.
I am trying to add an icon in context menu but don't know why it is not showing.
Here is the complete code:
chrome.menifest
content xulschoolhello jar:chrome/xulschoolhello.jar!/content/
skin xulschoolhello classic/1.0 jar:chrome/xulschoolhello.jar!/skin/
locale xulschoolhello en-US jar:chrome/xulschoolhello.jar!/locale/en-US/
overlay chrome://browser/content/browser.xul chrome://xulschoolhello/content/browserOverlay.xul
style chrome://browser/content/browser.xul chrome://xulschoolhello/skin/browserOverlay.css
browserOverlay.xul
<?xml version="1.0"?>
<!DOCTYPE overlay SYSTEM
"chrome://xulschoolhello/locale/browserOverlay.dtd">
<overlay id="xulschoolhello-browser-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
.
.
.
<!-- Context menu additions -->
<popup id="contentAreaContextMenu">
<menuseparator id="ss-context-menu-separator"/>
<menuitem id="ss-context-menu-item" class="menuitem-iconic"
label="click me"
oncommand="XULSchoolChrome.BrowserOverlay.sayHello(event);"/>
</popup>
</overlay>
browserOverlay.css
#ss-context-menu-item {
list-style-image: url("ss_16.png");
}
Any idea about problem?
From my tests with my own extension, I think that maybe you have to add a reference to the stylesheet in the overlay, in addition to the one in chrome.manifest. To do this you have to add the following line before the doctype declaration:
<?xml-stylesheet href="chrome://xulschoolhello/skin/browserOverlay.css" type="text/css"?>
If you don't put the file name, leaving only chrome://xulschoolhello/skin/, it should also work, according to the tutorial.
In case user downloads particular type of file (let's say .doc), I should show one more item (i.e. possible action) in addition to Save and Open at unknownContentType Firefox dialog.
How can I do it?
Upd. Looking at FlashGot addon sources, I've extracted the following:
chrome.manifest
overlay chrome://mozapps/content/downloads/unknownContentType.xul chrome://flashgot/content/DMOverlayFx.xul
overlay chrome://global/content/nsHelperAppDlg.xul chrome://flashgot/content/DMOverlayMoz.xul
Why do they have two overlays? What second does? And, how to understand that user chosen my option?
DMOverlayFx.xul
<?xml version="1.0" encoding="UTF-8"?>
<overlay id="DMOverlayFF"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="Common.js"/>
<script type="application/x-javascript" src="DMOverlay.js"/>
<radiogroup id="mode" >
<vbox insertbefore="save" id="synoextcontainer" flex="1">
<hbox flex="1">
<radio id="synoext-dmradio" label="Download with Synology NAS" />
</hbox>
</vbox>
</radiogroup>
</overlay>
DMOverlayMoz.xul
<?xml version="1.0" encoding="UTF-8"?>
<overlay id="DMOverlayMoz"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="Common.js"/>
<script type="application/x-javascript" src="DMOverlay.js"/>
<radiogroup id="mode" >
<hbox position="3" >
<radio id="synoext-dmradio" label="Download with Synology NAS"/>
</hbox>
</radiogroup>
</overlay>
The important file to overlay is unknownContentType.xul. You can see an example here: http://code.google.com/p/firedownload/source/browse/chrome/content/unknownContentType-overlay.xul. This adds a new checkbox to the dialog, but you can use the same approach to add a new radio button. You'll want to include a new JS file in the overlay (like unknownContentType-overlay.js in this example) where you can override the standard processing of the radio buttons. Process your new option and hand off the other options to the existing implementation (look at helperApps.js to see how the standard processing works).
I am new to firefox extension development. I am building an extension which needs to run for each page the user browses. At the moment the extension runs when firefox window starts.
I have pasted code below.
XUL Code:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="mainWin" title="my extension" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="chrome://myextension/content/myextension.js" />
</window>
and in the myextension.js Javascript file I have an alert(window.location.href);
I want to run this extension and get the url of the page I am browsing each time.
I might be going in a wrong direction. Any help much appreciated.
Simpler: https://developer.mozilla.org/en/Code_snippets/On_page_load
More control: https://developer.mozilla.org/en/Code_snippets/Progress_Listeners
Both linked from https://developer.mozilla.org/en/Code_snippets, also see
https://developer.mozilla.org/en/Extensions and https://developer.mozilla.org/en/Extensions/Firefox.