Envoyé par : skygreg
Date : 13/06/2006 16:17
Avec Xulrunner ?
Voici ce que j'ai fais : les prefs du wiki, et : user_pref("browser.chromeURL", "chrome://flxusb/content/mybrowser.xul");
mybrowser.xul étant le fichier du projet mybrowser (avec mybrowser.js et .dtd)
Une page XUL contenant ce code :
<html:p> <html:a target="_blank" href="http://www.google.fr/">Google</html:a> </html:p>
Quand je clique sur le lien, le browser s'ouvre bien mais avec www.mozilla.org comme site web !
Envoyé par : laurentj
Date : 13/06/2006 16:52
Est ce que tu as remplacé la fonction onload comme il est indiqué dans le wiki ? Apparement non sinon tu n'aurais pas ce mozilla.org...
Et pourquoi utiliser user_pref plutôt que pref ?? tu as modifié quel fichier de pref exactement ?
Fais exactement ce qui est indiqué dans le wiki.
Envoyé par : skygreg
Date : 13/06/2006 16:58
le code du wiki provient du projet mybrowser, je n'ai meme pas copier ton code, j'ai copier le fichier !
Oui, la fonction onload est bien redéclaré. Et la pref est bien prise, car le fichier mybrowser.xul s'ouvre parfaitement, avec boutons reload etc.
Si on ouvre une URL depuis un window.open, ça fonctionne bien. Si on ouvre une URL depuis un <html:a> la page afficher est celle par défaut (mozilla.org) car window.arguments n'existe pas !
Envoyé par : laurentj
Date : 13/06/2006 17:48
la page afficher est celle par défaut (mozilla.org)
non, c'est about:blank, si tu as bien recopié mon code...
et quand tu ouvres une page html (pas xul donc) dans laquelle il y a un a target=_blank, ça fait quoi ?
Envoyé par : skygreg
Date : 13/06/2006 18:09
Tu n'as pas bien lu mon message. Je n'ai pas recopié ton code, j'ai pris l'original ! celui de mybrowser, ton code provient de ce projet !
Si j'ouvre une page HTML depuis une page HTML, ça fonctionne.
Mais ça ne fonctionne pas avec un <html:a target="_blank" .....
Envoyé par : laurentj
Date : 13/06/2006 18:33
Euh, y a un problème de communication.
Non, le code que j'ai mis en exemple dans le wiki, au niveau de la fonction onload, ne provient pas de mybrowser (tout juste 3-4 lignes sont de mybrowser).
Donc : si tu veux que ça fonctionne, il faut prendre mybrowser, ouvrir mybrowser.js, remplacer la fonction onload par celle fournie sur le wiki. Tu n'oublies pas non-plus de mettre les prefs telles que je les ai indiqué, dans mybrowser/default/preferences/mybrowser-prefs.js (pas de user_pref, mais pref!). Et tu lances xulrunner.
Et là, tu verras que l'ouverture d'une nouvelle fenêtre sur un target blank fonctionne aussi bien pour des pages html que pour des pages XUL. Je viens de (re)vérifier.
Envoyé par : spoon
Date : 13/06/2006 19:14
Bonjour, bon je vois que mon sujet interresse du monde, je vais tester desuite ce que tu as mis sur le wiki. Pour ma part je m'en suis sorti en remplacant le browser par une iframe et en créant une fonction qui fait des window.open
function test(url){ window.open(url, "_BLANK", "chrome,extrachrome,menubar,height=550,width=750,resizable,scrollbars ,status,toolbar"); return false; }
en rajoutant dans les prefs :
pref("capability.policy.default.ChromeWindow.test", "allAccess");
ca me permet d'appeler la fonction a partir de la page html
<a href="javascript:parent.test(...)">test</a>
mais bon c'est du bricolage, bon je vais tester la methode du wiki Merci
Envoyé par : spoon
Date : 13/06/2006 20:55
Ok c'est nickel ca marche impec, pour le liens avec target , par contre je vais encore vous embeter mais est ce que quelqu'un pourrait me mettre sur la voie pour pouvoir aussi downloader des fichiers a partir de liens ?
Là ça met une erreur :
ML Parsing Error: undefined entity Location: chrome://mozapps/content/downloads/unknownContentType.xul Line Number 28, Column 18: <description>&intro.label;</description>
Encore merci en tout cas.
Envoyé par : skygreg
Date : 14/06/2006 14:01
bon, j'ai bien mis ta fonction onload, et ça ne fonctionne tjrs pas pour un <html:a/>
Voici le code.
mybrowser.xul :
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <!DOCTYPE window SYSTEM "chrome://flxusb/locale/mybrowser.dtd"> <window id = "mybrowser" title = "&mybrowser.title;" width = "800" height = "600" xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script src="mybrowser.js"/> <hbox> <button id="back" label="&mybrowser.back;" oncommand="back();" disabled="true"/> <button id="forward" label="&mybrowser.forward;" oncommand="forward();" disabled="true"/> <button id="reload" label="&mybrowser.reload;" oncommand="reload();"/> <button id="stop" label="&mybrowser.stop;" oncommand="stop();" disabled="true"/> <textbox id="urlbar" value="" flex="1" onchange="go();"/> <button id="go" label="&mybrowser.go;" oncommand="go();"/> </hbox> <browser flex="1" id="browser" src="" type="content-primary"/> <statusbar> <statusbarpanel id="status" label="" crop="end" flex="1"/> <progressmeter id="progress" mode="determined" value="0%" style="display: none"/> <statusbarpanel id="security" label="" style="display: none"/> </statusbar> </window>
mybrowser.js :
// nsIWebProgressListener implementation to monitor activity in the browser. function WebProgressListener() { } WebProgressListener.prototype = { _requestsStarted: 0, _requestsFinished: 0, // We need to advertize that we support weak references. This is done simply // by saying that we QI to nsISupportsWeakReference. XPConnect will take // care of actually implementing that interface on our behalf. QueryInterface: function(iid) { if (iid.equals(Components.interfaces.nsIWebProgressListener) || iid.equals(Components.interfaces.nsISupportsWeakReference) || iid.equals(Components.interfaces.nsISupports)) return this; throw Components.results.NS_ERROR_NO_INTERFACE; }, // This method is called to indicate state changes. onStateChange: function(webProgress, request, stateFlags, status) { const WPL = Components.interfaces.nsIWebProgressListener; var progress = document.getElementById("progress"); if (stateFlags & WPL.STATE_IS_REQUEST) { if (stateFlags & WPL.STATE_START) { this._requestsStarted++; } else if (stateFlags & WPL.STATE_STOP) { this._requestsFinished++; } if (this._requestsStarted > 1) { var value = (100 * this._requestsFinished) / this._requestsStarted; progress.setAttribute("mode", "determined"); progress.setAttribute("value", value + "%"); } } if (stateFlags & WPL.STATE_IS_NETWORK) { var stop = document.getElementById("stop"); if (stateFlags & WPL.STATE_START) { stop.setAttribute("disabled", false); progress.setAttribute("style", ""); } else if (stateFlags & WPL.STATE_STOP) { stop.setAttribute("disabled", true); progress.setAttribute("style", "display: none"); this.onStatusChange(webProgress, request, 0, "Done"); this._requestsStarted = this._requestsFinished = 0; } } },
// This method is called to indicate progress changes for the currently // loading page. onProgressChange: function(webProgress, request, curSelf, maxSelf, curTotal, maxTotal) { if (this._requestsStarted == 1) { var progress = document.getElementById("progress"); if (maxSelf == -1) { progress.setAttribute("mode", "undetermined"); } else { progress.setAttribute("mode", "determined"); progress.setAttribute("value", ((100 * curSelf) / maxSelf) + "%"); } } },
// This method is called to indicate a change to the current location. onLocationChange: function(webProgress, request, location) { var urlbar = document.getElementById("urlbar"); urlbar.value = location.spec;
var browser = document.getElementById("browser"); var back = document.getElementById("back"); var forward = document.getElementById("forward");
back.setAttribute("disabled", !browser.canGoBack); forward.setAttribute("disabled", !browser.canGoForward); },
// This method is called to indicate a status changes for the currently // loading page. The message is already formatted for display. onStatusChange: function(webProgress, request, status, message) { var status = document.getElementById("status"); status.setAttribute("label", message); },
// This method is called when the security state of the browser changes. onSecurityChange: function(webProgress, request, state) { const WPL = Components.interfaces.nsIWebProgressListener;
var sec = document.getElementById("security");
if (state & WPL.STATE_IS_INSECURE) { sec.setAttribute("style", "display: none"); } else { var level = "unknown"; if (state & WPL.STATE_IS_SECURE) { if (state & WPL.STATE_SECURE_HIGH) level = "high"; else if (state & WPL.STATE_SECURE_MED) level = "medium"; else if (state & WPL.STATE_SECURE_LOW) level = "low"; } else if (state & WPL_STATE_IS_BROKEN) { level = "mixed"; } sec.setAttribute("label", "Security: " + level); sec.setAttribute("style", ""); } } }; var listener;
function go() { var urlbar = document.getElementById("urlbar"); var browser = document.getElementById("browser");
browser.loadURI(urlbar.value, null, null); }
function back() { var browser = document.getElementById("browser"); browser.stop(); browser.goBack(); }
function forward() { var browser = document.getElementById("browser"); browser.stop(); browser.goForward(); }
function reload() { var browser = document.getElementById("browser"); browser.reload(); }
function stop() { var browser = document.getElementById("browser"); browser.stop(); }
function showConsole() { window.open("chrome://global/content/console.xul", "_blank", "chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar"); }
/* function onload() { var urlbar = document.getElementById("urlbar"); urlbar.value = "http://www.mozilla.org/";
listener = new WebProgressListener();
var browser = document.getElementById("browser"); browser.addProgressListener(listener, Components.interfaces.nsIWebProgress.NOTIFY_ALL);
go(); } */
function onload() {
listener = new WebProgressListener();
var browser = document.getElementById("browser"); browser.addProgressListener(listener, Components.interfaces.nsIWebProgress.NOTIFY_ALL);
var uriToLoad = null; if ("arguments" in window && window.arguments.length > 0 && window.arguments[0]){ try { nsCommandLine = window.arguments[0] .QueryInterface(Components.interfaces.nsICommandLine); if(nsCommandLine.length > 0){ uriToLoad = nsCommandLine.getArgument(0); } }catch(e){ uriToLoad = window.arguments[0]; } } if(uriToLoad == null || uriToLoad == ''){ uriToLoad = "about:blank"; }
var urlbar = document.getElementById("urlbar"); urlbar.value = uriToLoad; go(); }
addEventListener("load", onload, false);
flxusb-prefs.js
// indication de l'url de la fenêtre qui sert de navigateur pref("browser.chromeURL", "chrome://flxusb/content/mybrowser.xul"); // indication du lieu où ouvrir un lien de type target blank // 0=window par défaut // 1=window/tab courante // 2=nouvelle window // 3=nouvelle tab dans la fenêtre la plus récente (si vous avez des tabs) pref("browser.link.open_external", 2); // indication du lieu où ouvrir un lien qui ont un target ? pref("browser.link.open_newwindow", 2); // restriction sur la nouvelle fenetre ouverte // 0: aucune // 1: don't divert window.open at all // 2: don't divert window.open with features pref("browser.link.open_newwindow.restriction", 0);
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.