Оценить JavaScript для обычного текста, используя C #, .NET 3.5 - PullRequest
1 голос
/ 27 марта 2010

Как я могу оценить document.write javascript для открытого текста в C #? Я пытаюсь оценить это:

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

к этому:

2_3

1 Ответ

2 голосов
/ 23 февраля 2012

Из вашего комментария, "это функция на стороне клиента на загруженной HTML-странице", звучит так, как будто вы делаете какую-то очистку / сканирование экрана, когда HTML / JavaScript не делает запрос клиента к вашему приложению?

Если я правильно понимаю, что это то, что вы ищете, тогда вам нужен переводчик, который может «говорить» на JavaScript. C # не может этого сделать, поэтому следующая лучшая вещь - запустить компонент в вашем приложении C #, который способен понимать / интерпретировать (и, следовательно, оценивать) JavaScript.

Я бы порекомендовал заглянуть в элемент управления WebBrowser и HtmlDocument.DomDocument, загрузить загруженную HTML-страницу в элемент управления HtmlDocument / WebBrowser, он запустится и будет включать в себя результат функции JavaScript в 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 и выполнить его; и вы, вероятно, столкнетесь со многими препятствиями, если будете иметь дело со множеством разных типов страниц и т. д .; Если вы всегда очищаете страницу подобного типа и уверены в некоторых ожидаемых режимах поведения или функциях javascript, тогда вы сможете достичь некоторых результатов. Трудно сказать больше, учитывая минимальный объем предоставленной вами информации о том, чем занимается ваш проект.

Надеюсь, это поможет и то, чего вы пытались достичь. Дайте мне знать!

РЕДАКТИРОВАТЬ: Wow я не понял, что этот вопрос был 2 года! во всяком случае, было весело ответить на него!

...