문제

저는 java.net.URL과 입력 스트림을 사용하여 웹 페이지 콘텐츠를 문자열로 가져오고 있습니다.

문제는 내 자바스크립트가 렌더링되지 않고 응답을 그대로 받고 있다는 것입니다.

<html>
 <head></head>
 <body>
  <script>
   document.write("<h1>hello world!</h1>");
  </script>
 </body>
</html>

이것이 HTML 파일로 작성된 코드라고 가정합니다.이제 웹페이지 콘텐츠를 문자열로 가져올 때를 원합니다.자바스크립트가 렌더링되어야 합니다..

<html>
 <head></head>
 <body>
   <h1>Hello World!</h1>
 </body>
</html>

이와 같이 ..내가 어떻게 그걸 할 수 있어 ????

도움이 되었습니까?

해결책

JavaScript는 java.net.URL에 의해 자동으로 실행되지 않습니다.인라인 JavaScript가 포함된 HTML 파일은 다른 일반 텍스트 파일로 표시되며 어떤 방식으로도 구문 분석되지 않습니다.DOM이 구축되지 않고, JavaScript가 실행되지 않으며, CSS가 적용되지 않습니다.JavaScript를 실행하기 위해 해야 할 일은 다음과 같이 구문 분석하는 것입니다. HtmlUnit.

하지만 HTML을 제어할 수 있는 경우 HTML을 교체하는 것이 좋습니다. document.write() 정적 HTML이 포함된 명령문.물론 매우 기본적인 대안은 정규 표현식을 검색하는 것입니다. document\.write\(([^\)]+)\);? 이를 첫 번째 캡처된 일치 항목으로 대체합니다.

다른 팁

https://developer.mozilla.org/en/core_javaScript_1.5_Reference/LiveConnect/jsobject

언급 된 netscape.javaScript.jsObject 클래스의 평가 방법은 원하는 것일 수 있습니다 (DOM 조작을 관리하고 브라우저에서 작동하는지 확실하지 않지만).

행운을 빕니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top