2010-03-27 4 views
1

어떻게 C#에서 평범한 문서로 자바 스크립트를 평가할 수 있습니까? 당신은 어떤 종류의 일을 같이C#, .NET 3.5를 사용하여 일반 텍스트로 자바 스크립트 평가

귀하의 코멘트 "는 다운로드 된 HTML 페이지에 클라이언트 측 기능입니다"에서
2_3 
+0

클라이언트 측 기능의 결과를 서버 측 기능으로 가져 오려고합니까? –

+0

다운로드 한 HTML 페이지의 클라이언트 측 기능입니다. 평가하고 싶습니다. – Dmi

답변

2

, 그것은 소리 : 이것에

<script type="text/javascript"> 
a=2;b=3; 
document.write(a+"_"+y); 
</script> 

:이 평가하기 위해 노력하고있어 HTML/자바 스크립트가 앱에 클라이언트 요청을하지 않는 화면 스크래핑/크롤링

나는 그것이 당신이 찾고있는 것이라는 것을 정확하게 이해한다면, JavaScript를 "말할"수있는 통역사가 필요합니다. C#에서는이 작업을 수행 할 수 없으므로 다음으로 가장 좋은 것은 JavaScript를 이해/해석 (및 평가) 할 수있는 C# 응용 프로그램의 구성 요소를 실행하는 것입니다.

내가 WebBrowser 컨트롤 및 HtmlDocument.DomDocument 보길 추천, HTMLDocument 문서/웹 브라우저 컨트롤에서 다운로드 한 HTML 페이지를로드, 그것은 실행과 문서부터합니다 (HTML에서 자바 스크립트 함수의 결과가 포함됩니다 .write는 DOM 및 결과 HTML을 조작합니다. 간단한 형태의 응용 프로그램을 만들고 그 위에 웹 브라우저 컨트롤을 드래그하면

, 여기 난 그냥이 이론을 테스트하기 위해 쓴 샘플입니다

분명히 여기에서
using System; 
using System.Windows.Forms; 
// Make sure to add COM reference to "Microsoft HTML Object Library" 

namespace TheAnswer 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      webBrowser1.Url = new Uri("about:blank"); 
     } 


     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      MessageBox.Show("Loaded!"); 

      string testHtml = @" 
       <html> 
        <head> 
         <script type=""text/javascript""> 
          var a=2;var b=3; 
          document.write(a+""_""+b); 
         </script> 
        </head> 
        <body>Hello there!</body> 
       </html>"; 


      mshtml.IHTMLDocument2 htmlDoc = (mshtml.IHTMLDocument2)webBrowser1.Document.DomDocument; // IHTMLDocument2 has the write capability (IHTMLDocument3 does not) 
      htmlDoc.close(); 
      htmlDoc.open("about:blank"); 

      object html = testHtml; 
      htmlDoc.write(html); 
      html = null; 

     } 

    } 
} 

, 당신이에 연결 할 수 있습니다 " HTML을 HTML 문서에 다운로드하여 실행하십시오. 다른 종류의 페이지 등을 다루는 경우에는 길을 따라 많은 장애물을 겪을 가능성이 큽니다. 비슷한 유형의 페이지를 항상 스크랩하고 예상되는 동작이나 자바 스크립트 기능이 확실하다면 몇 가지 결과를 얻을 수 있습니다. 프로젝트의 내용과 관련하여 제공 한 최소한의 정보 만 고려하면 더 많은 것을 말하기는 정말 어렵습니다.

나는 이것이 도움이되고 당신이 성취하고자 한 바를 원합니다. 알려줘!

EDIT : 와우 ​​나는이 질문이 2 세임을 깨닫지 못했습니다! 어쨌든 어떤 재미를 보았습니다!

+0

감사합니다. 실시간 티커 목록에서 뉴스, 날씨 등을 읽으려고했습니다. 특히 유용하지 않은 것을 찾지 못했기 때문에 작은 스크립트를 작성하여 스크립트가 무엇이든간에 실행되도록했습니다. – Dmi

관련 문제