Je me demandais comment faire pour tester le chargement d'une Iframe inclus dans un XUL (via la balise html:iframe). Ou plus exactement savoir détecter les erreurs de connexion, de serveur ou les chargements incomplets de certaines pages.
Le but étant de recharger ces iFrames... avec les données postées au cas où (sans intervention de l'utilisateur).
Code : Tout sélectionner
var myListener = {
Status: Components.interfaces.nsIWebProgressListener,
QueryInterface: function(aIID)
{
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
aIID.equals(Components.interfaces.nsISupports))
return this;
throw Components.results.NS_NOINTERFACE;
},
onPageLoaded: function(aEvent) {
},
onStateChange: function(aProgress, aRequest, aFlag, aStatus) {
if (aFlag & this.Status.STATE_STOP)
{
// Recharger si erreur ou page incomplète
if (aStatus != 0)
{
}
else
{
}
}
},
};
Code : Tout sélectionner
// Gestion du chargement de l'Iframe
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
mainWindow.gBrowser.addProgressListener(myListener, Components.interfaces.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
aDoc.addEventListener("DOMContentLoaded", myListener.onPageLoaded, true);
// aDoc est la référence à l'Iframe
Donc les questions :
- comment prendre en compte seulement l'onglet sur lequel se trouve le XUL, et plus exactement juste l'Iframe de ce XUL ?
- comment recharger "invisiblement" l'iframe (avec ou sans rePOST) ?
Merci encore