11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour!

Voila, j'ai écris un script qui envoi un formulaire dans une iframe dynamiquement crée. Il fonctionne bien et le formulaire est bien soumis dans mon iframe.

Maintenant, un fois le formulaire soumis et le résultat chargé dans l'Iframe, j'aimerai y accéder. Pour cela j'ai besoin de déterminer si mon document est un document xml ou pas. Comment puis-je faire?

A savoir que j'ai un pointeur sur mon iframe que j'obtient ainsi:


iframe = $('monIframe')
var doc = iframe.contentWindow.document;
alert(doc);


Sous FF ça me donne [object XMLdocument], sous IE Smiley object

Mais comment savoir si c'est un document XML ou html?

Bien à vous

--
Lox
L'usage? Classe d'upload "pseudo ajax" via une iframe et traitement de la réponse a l'identique d'une réponse d'un "vrai ajax" (avec responsetext et responsexml)

Et j'ai trouvé après des heures de café bien noir, la fonction onStateChange s'exécute par un evènement onload sur l'iframe:

this.onStateChange = function () {

		try {   var doc = this.iframe.contentDocument.document; this.iframe.contentDocument.document.close(); }	// For NS6

		catch (e){
			try{ var doc = this.iframe.contentWindow.document; this.iframe.contentWindow.document.close(); } // For IE5.5 and IE6
			catch (e){
				try { var doc = this.iframe.document; this.iframe.document.body.close(); } // for IE5
				catch (e) {
					try	{ var doc = window.frames['frame_'+this.uniqueId].document; } // for really nasty browsers
					catch (e) { } // forget it.
				}
			}
		}



		if ( !(navigator.userAgent.indexOf('MSIE') > 0 && navigator.userAgent.indexOf('Opera') == -1) ) {

			if (doc instanceof XMLDocument) {
				isXML = true;
				this.response.responseXML = doc;
				
			} else {
				isXML = false;
				this.response.responseXML = null;
			}
		}
		else {
			var xmlDocument = doc.XMLDocument;
			if (xmlDocument != null) {
				isXML = true;
				this.response.responseXML = doc.XMLDocument;
			} else {
				isXML = false;
				this.response.responseXML = null;
			}
		}



Impressionnant n'est ce pas?

PS. je posterai ici ma classe une fois terminée et opérationnelle