11548 sujets

JavaScript, DOM et API Web HTML5

Bien le bonjour à tous !

Je voulais savoir s'il y avait un moyen de différencier l'appel à toString() suivant que l'on passe par un alert(...) ou par un div.innerHTML = ...

Eh oui, car si ma méthode toString() a des retours de ligne, il faudra qu'ils soient "\n" pour les alert et "<br />" pour le innerHTML...

Un petit exemple ? :


monObjet.prototype.toString = function () {
return "ceci est le nom de mon objet : <br />" + this.nomDeMonObjet;
/*
Idéalement il faudrait ici un truc genre :
if (c'est une alert, alors \n) sinon (<br />)
*/
}

var obj = new monObjet(...);
document.getElementById('monDiv').innerHTML = obj; // affichera un truc joli
alert(obj); // affichera un truc moche où le <br /> n'est pas interprété


Merci d'avance!
rekam
Essaie de voir avec la propriété caller, mais je doute que tu puisses aller très loin.
Le mieux est de garder les \n dans toString, et lorsque tu utilises innerHTML, tu fais :

element.innerHTML = objet.toString().split(/\r\n|\r|\n/).join('<br />');