javascript - 在从 C# 字符串生成的 HTML 上运行 javascript

标签 javascript c# html

我想在从 C# 字符串生成的 HTML 上运行 javascript。 (无需打开浏览器 - 只需 C# 代码)

类似于:

string myHTML = '<div id="divTest">This is test<br/><br/></div>';

Javascript 应该是:

function test 
{
     return document.getElementById('divTest').offsetHeight;
}

我已经尝试过检查一些 headless 浏览器,如 PhantomJS 和 Optimus - 但它们没有呈现字符串的选项(只能通过 http://google.com 这样的网址打开网页/.有没有办法通过C#来实现?

最佳答案

以下对我有用:

string html = "<html><head></head><body><div id=\"divTest\">This is test<br/><br/></div></body></html>";

string script1 = "return document.getElementById('divTest').innerText";
string script2 = "return document.getElementById('divTest').offsetHeight";

var options = new PhantomJSOptions();
options.AddAdditionalCapability("javascriptEnabled", true);

var driver = new PhantomJSDriver(options);
driver.Url = "file://dummy.html";
driver.Navigate();
driver.ExecutePhantomJS("document.write('" + html + "');");

var test1 = driver.ExecutePhantomJS(script1);
//Returns: This is a test
var test2 = driver.ExecutePhantomJS(script2);
//Returns: 40

您需要安装 Selenium.WebDriver NuGet 并从 http://phantomjs.org/download.html 下载 PhantomJS exe。它需要与您的 exe 位于同一文件夹中或位于 PATH 中。

关于javascript - 在从 C# 字符串生成的 HTML 上运行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964030/

相关文章:

Javascript 从 url 中删除符号 "amp;"

html - iFrame 页面上显示双垂直滚动条

javascript - Promise API - 合并 2 个异步调用的结果

javascript - Php Javascript 如何从字符串中删除唯一想要的文本?

c# - 为什么要使用 String.Equals 而不是 ==?

C#泛型和继承

c# - 如何复制对象的实例?

javascript - 在 JavaScript 中获取名为颜色的 CSS/HTML 的 RGB 值

javascript - 如何将一行 CoffeeScript 代码制作成多行代码?

javascript - Android浏览器快速连续两次乱码事件