2010-11-11 79 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