2010-05-21 2 views
0

다른 페이지에서로드 된 HTML이 포함 된 문자열이 있는데 어떻게 Javascript를 사용하여 body 태그에서 백그라운드 속성을 추출합니까?JavaScript에서 HTML이 포함 된 문자열에서 background = value를 추출하려면 어떻게합니까?

문자열의 body 태그는 다음과 같습니다

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

감사합니다!

은 또한 당신의 HTML 문자열이 유효한 HTML이 있다고 가정한다

+0

일을 얻는다 '속성 자체와 CSS 대응 물이 아니다. –

+0

환호, 끝냈습니다;) – bbeckford

답변

2

은 내가 body 태그의 background 속성 (HTML을 포함) 변수 data 문자열을 검색 할이, 할 수있는 정규 표현식을 함께 패치. 정규식은 here에서 도난 당하고 조금 수정되었습니다. 나는 아직도 정규식에 새로 온 사람, 그래서 더 유창하게 할 수있는 것 같아요,하지만 여전히 당신은 그것을 이전 HTML 4 '배경임을 명확하게하기 위해 예를 들어, HTML 문자열을 게시해야

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

굉장한, 그것을했다! !! 고마워 Simen, 큰 도움입니다 !! 나는 다른 사람을 위해 나의 다른 질문에 이것을 게시 할 것이다. – bbeckford

+0

(내가 게시 한 대답은 여기에있다 - http://stackoverflow.com/questions/2883542/how-do-i-load-the-background-image-from -another-page/2895703 # 2895703) – bbeckford

1

나는 당신의 문제는 (제한 사항없이 코드 예제를 제공) 이해이 내 대답은 ... ...

var html = yourString; 
var background = ""; 

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

실제로 HTML 문자열을 DOM에 추가하지 않으면이 작업을 수행하기에 쉽고 빠르지 않을 수 있습니다. 손으로 배경 속성을 파싱해야 할 수도 있습니다.

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

안녕하세요, 라이언, 답장을 보내 주셔서 감사합니다. 그게 작동하지 않습니다. 내가 두려워 할 때 (배경) 후에 그냥 '정의되지 않은'돌아올 때 나는 비슷한 질문을 여기에서 물었다 - http://stackoverflow.com/questions/2883542/how 다른 페이지에서 백그라운드 이미지로드 -하지만 다른 해결책을 찾기 위해 새로운 질문으로 다시 언급하는 것이 좋습니다. – bbeckford

+0

흠 ... 실제로 DOM에 html을 추가하지 않았기 때문일 수 있습니다. – Ryan

관련 문제