2010-11-11 36 views
0

我被迫在客户端解析一些HTML(是的,这真的是唯一的选择在这种情况下),但我在Firefox有一些麻烦只与以下内容:问题解析与jQuery,正则表达式和Firefox的HTML

$('#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] 

    }); 
    } 
); 

正从load返回的HTML是沿着线的东西:

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

正则表达式似乎工作,如果你复制罚款并粘贴到Firefox的JS控制台和代码作为一个整体在Internet Explorer 7/8/9中正常工作。

所以这里是棘手的一点。在Firefox的matchName.each的每一次迭代中为空。从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; 

最后,这似乎只在str.match(re)使用re.exec,从不时发生。我目前处于全面亏损的状态,现在已经开始了一个小时的工作,所以我希望这个问题能够带来某种意义!

+1

我敢肯定它不是你想听到的,因为它不是一个解决问题的方法:不使用HTML的 – pinkfloydx33 2010-11-11 23:00:32

+0

正则表达式的如果也能避免所有我会的!最奇怪的部分是,正则表达式的本身在我测试过的任何其他浏览器中都能正常工作,并且总是在for循环之外调用时......总之,Im难住了。 – HurnsMobile 2010-11-11 23:02:51

+0

你如何生成这个日志输出?为什么在一个日志行中正则表达式不同? – 2010-11-11 23:08:16

回答

0

这可能不是最终的答案,但它很容易检查。我通过JSLint运行了这个,并得到了这些错误。偶尔,这样的事情可能会导致浏览器差异。

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

我无法得到这个工作,但幸好我能够访问一个API来完成所有的服务器端! – HurnsMobile 2010-11-15 18:49:40