2010-11-11 1 views
0

Je suis obligé d'analyser du code HTML côté client (et oui, c'est vraiment la seule option dans ce cas), mais j'ai un peu de problème avec Firefox uniquement les éléments suivants:Problème lors de l'analyse du code HTML avec jQuery, regex et Firefox

$('#Extensions').load('/advanced/admin/config.php?type=setup&display=extensions #container li' 
    ,function(){ 
    $('li').each(function(){ 

    var liRow=$(this).html(); 
    var reExten=/([0-9]+)/g; 
    var extension = liRow.match(reExten)[0] 

    var reName=/>([a-zA-z0-9\s]+ *)/g; 
    var matchName = reName.exec(liRow); 
    var name = matchName[1] 

    }); 
    } 
); 

le code HTML qui est revenu de load est quelque chose le long des lignes de:

<a href="file.php?type=A&amp;extension=1001">Test Extension &lt;1001&gt;</a> 

le regex semble fonctionner très bien si vous copiez et collez-le dans la console firefox JS et le code dans son ensemble fonctionne très bien dans Internet Explorer 7/8/9.

Alors, voici le petit problème. Dans firefox matchName est null sur toutes les autres itérations de .each. Exemple de sortie de Firebug:

LOG: Matches: The Boss 
LOG: data: <A href="file.php?type=A&amp;extension=13">The Boss &lt;13&gt;</A> 
LOG: regex: />([a-zA-z0-9\s]+ *)/g; 
LOG: Matches: Test Extension 
LOG: data: <A href="file.php?type=A&amp;extension=1001">Test Extension &lt;1001&gt;</A> 
LOG: regex: />([a-zA-z0-9\s]+ *)/g; 
LOG: Matches: John Smith 
LOG: data: <A href="file.php?type=A&amp;extension=3801">John Smtih&lt;3801&gt;</A> 
LOG: regex: />([a-zA-z0-9\s]+ *)/g; 
LOG: Matches: Guy Smiley 
LOG: data: <A href="file.php?type=A&amp;extension=3802">Guy Smiley &lt;3802&gt;</A> 
LOG: regex: />([a-zA-z0-9\s]+ *)/g; 
LOG: Matches: 3803 
LOG: data: <A href="file.php?type=A&amp;extension=3803">Jane Doe &lt;3803&gt;</A> 
LOG: regex: /extdisplay=([0-9]+)/g 
LOG: Matches: 3804 
LOG: data: <A href="file.php?type=A&amp;extension=3804">John Doe &lt;3804&gt;</A> 
LOG: regex: />([a-zA-z0-9\s]+ *)/g; 

Enfin, cela ne semble se produire lors de l'utilisation re.exec et jamais sur str.match(re). Je suis complètement perdu et je commence à le faire depuis une heure maintenant, j'espère que la question aura un sens!

+1

Je suis sûr que ce ne est pas ce que vous voulez entendre, comme pas une solution à votre problème: ne pas utiliser regex sur HTML – pinkfloydx33

+0

Si l'on pouvait éviter à tout ce que je le ferais! La partie la plus étrange est que les regex eux-mêmes fonctionnent très bien dans tout autre navigateur que j'ai testé et toujours lorsqu'il est appelé en dehors d'une boucle for ... En un mot, je suis perplexe. – HurnsMobile

+0

Comment générez-vous cette sortie de journal? Et pourquoi la regex est-elle différente sur l'une des lignes de journal? –

Répondre

0

Ce n'est probablement pas la réponse finale, mais c'est une chose facile à vérifier. J'ai couru ceci par JSLint et ai eu ces erreurs. Parfois, des choses comme celles-ci peuvent expliquer les différences de navigateur.

Problem at line 1 character 23: Bad line breaking before ','. 

$('#Extensions').load('/advanced/admin/config.php?type=setup&display=extensio... 

Problem at line 7 character 45: Missing semicolon. 

var extension = liRow.match(reExten)[0] 

Problem at line 11 character 29: Missing semicolon. 

var name = matchName[1] 
+0

Je n'ai pas réussi à faire fonctionner ça, mais heureusement, j'ai pu avoir accès à une API pour tout faire côté serveur! – HurnsMobile

Questions connexes