2010-05-21 59 views
0

我有一個字符串包含從另一個頁面加載的HTML,我如何從它的身體標籤使用JavaScript提取背景屬性?如何從JavaScript中的包含HTML的字符串中提取背景=值?

字符串中的body標籤看起來是這樣的:

<body onload='init();' background='storage/images/jsb_background.jpg' link='#000000' vlink='#000000' alink='#000000' leftmargin='0' topmargin='0' marginwidth='0' marginheight='0'> 

謝謝!

+0

你應該張貼一個例子HTML字符串明確指出,這是舊的HTML 4'背景'屬性本身,而不是CSS的對應物。 – 2010-05-21 16:21:19

+0

乾杯,已經完成;) – bbeckford 2010-05-21 16:25:02

回答

2

我拼湊一個正則表達式要做到這一點,這將查詢的data字符串變量(包含HTML)用於body標籤的background屬性。正則表達式從here被盜,並修改了一下。我還是新來的正則表達式,所以我想它可以更流暢完成,但它仍然能夠完成任務

var data = /* your html */; 
var regex = /body.*background=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?/; 
var result = regex.exec(data); 
if (result.length > 1) { 
    var background = result[1]; 
    alert(background); 
} 
else { 
    //no match 
} 
+0

太棒了,就是這樣!感謝西門子,這是一個很大的幫助!我會在其他問題上發佈這個對其他人:) – bbeckford 2010-05-24 08:23:13

+0

(我發佈的答案在這裏 - http://stackoverflow.com/questions/2883542/how-do-i-load-the-background-image-from -another頁/ 2895703#2895703) – bbeckford 2010-05-24 08:31:19

1

這就是我的回答,我明白你的問題(在有限的細節,並沒有代碼示例)...

這也假設你的HTML字符串是有效的HTML ...

var html = yourString; 
var background = ""; 

background = $(html).find("body").attr("background"); 

如果你實際上並沒有將你的HTML字符串附加到DOM,那麼可能沒有一個好的和容易的jQuery方法來完成這個任務。您可能需要手動解析背景屬性。

var html  = yourString; 
var charStart = html.indexOf("<body"); 
var charEnd = html.indexOf(">", charStart); 
var bodyTag = html.substring(charStart,charEnd+1); 
charStart  = bodyTag.indexOf("background='")+12; 
charEnd  = bodyTag.indexOf("'",charStart+13); 
var background = bodyTag.substring(charStart,charEnd); 
+0

嗨瑞安,感謝您的答覆。 這不起作用我害怕,當我做了警報(後臺)之後,它剛剛回來'undefined' 我在這裏問了一個類似的問題 - http://stackoverflow.com/questions/2883542/how -do-i-load-the-background-image-from-another-page - 但被建議在一個新問題中重新引用它,希望找到一個不同的解決方案。 – bbeckford 2010-05-21 16:31:17

+0

嗯......這可能是因爲你實際上並沒有將html附加到DOM。 – Ryan 2010-05-21 16:39:13

相關問題