Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Detection changement de page d'une iframe

Envoyé par : requiem

Date : 18/07/2006 11:45

Bonjour,

tout est dans le titre. J'aimerais déclencher un évenement quand la page dans l'iframe change (par exemple quand il click sur un lien dans cette page). J'ai regardé sur le forum mais les solutions proposées quand il y en a, ne marchent pas.

Merci

# Re: Detection changement de page d'une iframe

Envoyé par : thefab

Date : 18/07/2006 12:43

Il faut peut-être utiliser <browser> à la place, tu peux y placer un écouteur pour les différents évènements de navigation (changement de location, avancement,...) à l'aide de addProgressListener

# Re: Detection changement de page d'une iframe

Envoyé par : requiem

Date : 18/07/2006 13:39

Merci de ta réponse mais je ne veux pas utiliser un browser car je ne fais pas une extension Firefox mais une application autonome (qui ne nécessite pas d'installation).

Une autre solution ?

# Re: Detection changement de page d'une iframe

Envoyé par : thefab

Date : 18/07/2006 15:16

mais une application autonome

Alors utilise <browser>. Il n'y a absolument aucune différence dans le fait d'employer <iframe> ou <browser>. Utiliser <browser> ne signifie pas que tu vas avoir l'interface utilisateur (boutons précédent, suivant,...) <browser> est similaire à <iframe> avec des trucs en plus (historique,...)

# Re: Detection changement de page d'une iframe

Envoyé par : chBok

Date : 18/07/2006 16:02

J'ai également démarré des tests sur cette question. Pour l'instant, j'en suis à gérer un événement pageshow qui semble donner de bon résultat.

La technique utilisant un addProgressListener ne répondait pas à toutes mes attentes, car elle ne détecte pas, par exemple, le changement ou la fin de chargement d'une page située sur un autre onglet que celui affiché à l'écran.

Un truc sympa à lire (en anglais dans le code source) : http://lxr.mozilla.org/mozilla1.8/source(..)

# Re: Detection changement de page d'une iframe

Envoyé par : requiem

Date : 18/07/2006 17:16

En clair vous me dites que je peux utiliser un browser meme si mon application n'est pas une extension firefox. Ca me parait bizarre parce que le browser necessite des droits particuliers qui ne sont accessible que quand il s'agit d'une extension (installée).

Mais bon, je vais essayer. Merci.

chBok, ca a l'air compliquer ton truc mais je vais essayer de voir.

Je vous tiens au courant.

# Re: Detection changement de page d'une iframe

Envoyé par : thefab

Date : 18/07/2006 19:21

chBok:

Mais dans le cas d'une utilisation de <browser> et pas <tabbrowser>, addProgressListener() devrait suffire, non ?

requiem:

pas une extension Firefox mais une application autonome

Une application basée sur XULRunner ?

je peux utiliser un browser meme si mon application n'est pas une extension firefox

Oui, colle ça dans un fichier et affiche-le directement dans Firefox: le 2 fonctionnent (et c'est valable pour tous les éléments XUL).

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <iframe class="box-inset" src="http://www.google.ch/" flex="1"/>
  <browser class="box-inset" src="http://www.xulfr.org/" flex="1"/>
</window>

# Re: Detection changement de page d'une iframe

Envoyé par : thefab

Date : 18/07/2006 19:22

Ou alors tu parles d'une <html:iframe> ?

# Re: Detection changement de page d'une iframe

Envoyé par : requiem

Date : 19/07/2006 09:02

Désolé de pas être clair.

Non je ne parle pas bien sur de <html:iframe> mais bien de l'objet XUL.

Quand je dis "aplication autonome" (je suis pas clair encore), je veux dire que c'est une application qui tourne sous Firefox mais qui ne nécessite pas d'installation. Comme par exemple Ajax Write. Qui n'est donc pas placer dans le chrome (ce qui pose des problemes de droits !)

Mais comme je l'ai dit plus haut, quand je met un browser à la place de l'iframe, il me sort :

Erreur : uncaught exception: [Exception... "Component returned failure    code: 0x80004005 (NS_ERROR_FAILURE)  [nsIWebProgress.addProgressListener]"  nsresult: "0x80004005 ( NS_ERROR_FAILURE)"  location: "JS frame ::  chrome://global/content/bindings/browser.xml :: addProgressListener ::  line 346"  data: no]
Erreur : uncaught exception: Permission refusée d'obtenir la propriété  UnnamedClass.classes

# Re: Detection changement de page d'une iframe

Envoyé par : thefab

Date : 19/07/2006 09:37

Efectivement, si ton application n'est pas dans le chrome tu n'as pas accès à tout, résultat: Permission refusée d'obtenir la propriété UnnamedClass.classes.

Est-ce possible de voir le code qui provoque l'erreur, est-ce que tu appelles addProgressListener() ?

# Re: Detection changement de page d'une iframe

Envoyé par : requiem

Date : 19/07/2006 10:31

Même sans appeler le addProgresListener il me met une erreur.

En fait, j'ai créé une appli XUL juste avec un element browser.

Et rien que ca il me met :

Erreur : uncaught exception: Permission refusée d'obtenir la propriété UnnamedClass.classes

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.