2010-01-18 6 views
0

J'utilise jQuery pour essayer d'accéder au contenu d'un WYSIWYG iframe, juste pour obtenir le nombre de caractères et mettre à jour un compteur en dehors du iFrame. Assez curieusement, mon code fonctionne bien dans Firefox, mais se brise dans toutes les versions d'Internet Explorer. Vous vous demandez si quelqu'un pourrait m'aider avec une syntaxe IE-friendly? Voici ce que j'ai jusqu'à présent:Accès iFrame Contenu via jQuery dans IE

Ceci est la fonction onload:

textCounterWYSIWYG('longDesc_cnt', 2000); 

Ceci est la fonction elle-même:

function textCounterWYSIWYG(text, limit) { 
    var len = String($("iframe").contents().find("body").html()); 
    var trimmed = len.replace(/^\s+|\s+$/g, ''); 
    var length = trimmed.length; 
    if (length > limit) { 
    field.value = field.value.substring(0, maxlimit); 
    } 
    else { 
    var rem = limit - length; 
    $("#"+text).text(rem + " Characters Remaining"); 
    } 
} 

Le var len = ... la ligne est ce qui semble casser IE. Toutes les pensées/suggestions sont les bienvenues!

+0

Dans IE, ce qui est $ ("iframe"). Longueur, $ ("iframe"). Le contenu() de longueur. Et le contenu $ ("iframe").(). Trouve ("corps") longueur. ? –

Répondre

0

La première chose que je voudrais essayer est d'obtenir l'iframe par id plutôt que par nom de la balise.

En outre, je changerais ce nom de variable « len » à quelque chose de plus pertinent ;-).

+0

Ajout d'un ID à l'iFrame corrigé l'erreur, et sur le chargement de la page fixe le nombre de caractères. Cependant, sur keyup il appelle toujours la fonction de comptage de caractères, mais ne l'est plus mise à jour le compte, mais il fonctionne sur la charge de la page .... –

+0

Il semble que cela se produit parce que ce qu'il devient pour le compte ne soit pas mise à jour, même Bien qu'utilisant Firebug pour inspecter l'élément, le corps est en train de se mettre à jour. J'ai même changé le javascript pour référencer l'ID de corps: var len = Chaîne ($ ("# theWYSIWYG"). Contents(). Find ("# iframeBody"). Html()); Cela renvoie toujours un 4 pour la variable "longueur" ci-dessus. –

+0

Ah, une inspection plus approfondie révèle qu'en le changeant en ID, la valeur de len est "nulle", ce qui explique pourquoi le compte n'est pas mis à jour, mais aussi pas d'erreur. Donc, apparemment, nous ne récupérons pas vraiment le contenu de l'iFrame en utilisant cette méthode. –

0

Peut-être est certains paramètres de sécurité par défaut IE? Quelle bibliothèque WYSIWYG utilisez-vous?

+0

Utilise actuellement uEditor pour jQuery. Je ne sais pas si c'est la sécurité, l'erreur IE donne bien sûr semble n'avoir rien à faire avec où il est réellement, donc je ne reçois pas une description détaillée de ce qui se passe. –

+0

Btw, l'erreur Ie donne l'objet attendu à la fin de mon include jQuery, doute que cela aide cependant, comme je l'ai déjà vu lorsque l'erreur réelle n'a rien à voir avec jQuery. –

+0

Est-ce que l'un des plugins que vous utilisez "emballé" par opposition à "minifié" je sais qu'il ya des pièges avec l'emballage que certains développeurs de plug-in ne répondent pas. – prodigitalson