2017-11-15 1 views
1

거대한 html 문자열에서 변수를 추출하는 방법을 알아 내려고합니다. 다음은 간단한 예제입니다.html blob의 스크립트 태그에서 변수를 추출하는 방법

업데이트 다음은 일반적인 접근 방법을 사용하는 스크린 샷입니다. test['foo']과 같은 간단한 작업은 작동하지 않습니다. 이 문자열은 서버에서 반환 된 문자열이며 실제 문서 나 창에로드되지 않습니다. 그것은 메모리에 보관되는 html 객체입니다.

enter image description here

enter image description here

https://jsfiddle.net/hvpvg3o4/

HTML

<div id="test"> <!-- div is just for jsfiddle --> 
    <script> 
    var test = { // <-- I WANT YOU! 
     foo: 'bar' 
    }; 

    var somethingIDontWant = 1; 
    var iDontCareAboutYouEither = { 
     blag: 1 + 1 
    }; 
    </script> 
</div> 

자바 스크립트

var testTag = document.getElementById('test'); 
var scriptTag = testTag.getElementsByTagName('script'); 
// var testObj = ?; 
하지

가 난 그냥 스크립트 태그에서 텍스트를 얻을 중 평가 실행하거나 일부 JSON.parse하지만, 다른 물건 스크립트 태그 안에 존재이기 때문에, 내가 할 수있는 수 있다고 기대했다

가 이 일부 방법은 스크립트 태그 또는 일부 멋진 정규식에서 변수를 추출 할 수 있습니까? 요구되는 객체가 글로벌 범위에 선언 된 경우

+0

왜 그런 식으로하고 싶은지 조금 설명 할 수 있습니까? 귀하의 자바 스크립트 또는 html 문자열은 어디서 오는가? –

+0

eval (scriptTag.innerHTML); console.log (test.foo); – Deathmras

+0

많은 HTML이 포함 된 응답에서 URL을 추출하려고합니다. 지금 당장은 서버에 접속하여 그 프로세스를 수정하는 옵션이 없으므로 기본적으로 스크립트 태그와 인라인 자바 스크립트가 붙어 있습니다. 그것은 붕괴 수정이지만, 그것을 작동하게하려고 – mwilson

답변

0

console.log(test['foo']) 
 
console.log(somethingIDontWant) 
 
console.log(iDontCareAboutYouEither['blag'])
<div id="test"> 
 
    <script> 
 
    var test = { 
 
     foo: 'bar' 
 
    }; 
 

 
    var somethingIDontWant = 1; 
 
    var iDontCareAboutYouEither = { 
 
     blag: 1 + 1 
 
    }; 
 
    </script> 
 
</div>

+0

내 질문을 업데이 트했습니다. 이후의 변수는 윈도우/문서에 첨부되지 않습니다. 메모리에 있음 – mwilson

+0

테스트 div를 메모리에서로드 한 후 $ (document)를 사용하면 도움이 될 수 있습니다. –

0

을보십시오. 스크립트 태그가 선언 될 때마다 원하는 객체에 액세스 할 수 있습니다.

예 :

<HTML> 
<HEAD> 
<SCRIPT> 
    var test = { 
     foo: 'bar' 
    }; 

    var somethingIDontWant = 1; 
    var iDontCareAboutYouEither = { 
     blag: 1 + 1 
    }; 
</SCRIPT> 
</HEAD> 
<BODY> 
<DIV>UGLY HTML</DIV> 
<SCRIPT> 
//INSERT CUSTOM SCRIPT FOR ACCESSING DESIRED OBJECT// 
console.log(test) 
</SCRIPT> 
</BODY> 
</HTML> 

콘솔 수있는 몸에 이상 정의 스크립트 여전히 액세스 var에 test..even ...

출력 : {foo는 ' bar '}

관련 문제