gpt4 book ai didi

c# - 使用 C#、.NET 3.5 将 javascript 评估为纯文本

转载 作者:行者123 更新时间:2023-11-30 18:54:43 26 4
gpt4 key购买 nike

如何在 C# 中将 document.write javascript 评估为纯文本?我正在尝试对此进行评估:

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

为此:

2_3

最佳答案

从您的评论来看,“它是下载的 HTML 页面上的客户端功能”,这听起来像是您在进行某种屏幕抓取/抓取,而 HTML/JavaScript 并未向您的应用发出客户端请求?

如果我正确理解这就是您要寻找的内容,那么您需要一个可以“说” JavaScript 的解释器。 C# 无法做到这一点,因此下一个最佳做法是在您的 C# 应用程序中启动一个能够理解/解释(并因此评估)JavaScript 的组件。

我建议查看 WebBrowser 控件和 HtmlDocument.DomDocument,将下载的 HTML 页面加载到 HtmlDocument/WebBrowser 控件中,它将运行并将 JavaScript 函数的结果包含在 HTML 中(自 document. write 操作 DOM 和生成的 HTML)。

如果您创建一个简单的表单应用程序并将 Web 浏览器控件拖到它上面,这是我刚刚编写的一个示例来测试这个理论:

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 函数,那么你可能能够取得一些结果。考虑到您提供的关于项目内容的信息很少,真的很难说更多。

我确实希望这对您有所帮助,并且正是您想要完成的。让我知道!

编辑:哇我还没意识到这个问题已经有 2 年了!不管怎样,回答这个问题很有趣!

关于c# - 使用 C#、.NET 3.5 将 javascript 评估为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2530789/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com