La bonne manière d'ajouter un évènement à un élément XUL
Publié : 20 août 2009, 20:34
Bonjour,
Je souhaite avoir un bouton particulier. Ça sera un gros bouton, contenant du texte (ou une petite image) ainsi qu'un champ de recherche. Si on clique dessus et que la textebox est vide, alors il ouvre un nouvel onglet, sinon il ouvre un onglet avec l'URL stockée dans keyword.URL avec comme mot-clé le contenu du champ de texte.
Voici le code du panneau latéral :
Comment bien faire pour ajouter des évènement dessus ? J'ai rajouté un attribut onclick avec comme valeur une fonction openNewTab() contenue dans sidebar.js. Ça fonctionne à eu près mais ça génère l'erreur suivante :
J'ai tenté un :
Mais la deuxième ligne ne fonctionne pas, il me dit "Erreur : newTabButton is null", il ne trouve pas l'élément avec cet ID -_-
Je suis trop nul, aidez moi ^^
Je souhaite avoir un bouton particulier. Ça sera un gros bouton, contenant du texte (ou une petite image) ainsi qu'un champ de recherche. Si on clique dessus et que la textebox est vide, alors il ouvre un nouvel onglet, sinon il ouvre un onglet avec l'URL stockée dans keyword.URL avec comme mot-clé le contenu du champ de texte.
Voici le code du panneau latéral :
Code : Tout sélectionner
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/global.css"?>
<?xml-stylesheet href="chrome://emptysidebar/content/bindings.css" type="text/css"?>
<?xml-stylesheet href="chrome://emptysidebar/skin/sidebar.css" type="text/css"?>
<!DOCTYPE page SYSTEM "chrome://emptysidebar/locale/emptysidebar.dtd">
<page
id="sbEmptySidebar"
title="&emptysidebar.title;"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="sidebar.init()"
onunload="sidebar.destroy()">
<script src="sidebar.js" type="application/x-javascript" />
<tabpreviews id="previews" class="tbs-tabpreviews-vertical" flex="1">
<box style="border:1px solid green" id="openNewTabButton">
<vbox>
<label value="New Tab" />
<textbox />
</vbox>
</box>
</tabpreviews>
</page>
En plus, ça ne me permet pas de récupérer dans ma fonction le contenu de la textbox. Comment faire autrement ?Erreur : this.parentNode.parentNode.onClick is not a function
Fichier source : chrome://emptysidebar/content/emptysidebar.xul
Ligne : 1
J'ai tenté un :
Code : Tout sélectionner
var newTabButton = document.getElementById("openNewTabButton");
newTabButton.addEventListener("click", openNewTab, false);
Je suis trop nul, aidez moi ^^