使用dom访问调用javascript文件
本文关键字:javascript 文件 调用 访问 dom 使用 | 更新日期: 2023-09-27 18:14:53
我有一个javascript文件,有代码与DOM访问
var a=document.getElementById("abc").value
我有一个包含所有DOM信息的html文件
<html>...<input id="abc" ...></html>
无论如何要得到c#调用javascript文件,并返回a
的值,回到c#程序?
实际上JavaScript可能要复杂得多,我需要将这些"感兴趣的值"引导回c#,但让我们只考虑这里提到的简单示例。
可能的方向,我可以认为是使用https://jint.codeplex.com/,或Web浏览器控制。这里的挑战在于,它不仅涉及JavaScript,还涉及HTML文件。
我想知道的是:
是否有一种方法来通道变量值从JavaScript回到c# ?
如何从HTML文件中获得JavaScript评估DOM元素?
使用WebBrowser和Jint:
using (WebBrowser browser = new WebBrowser())
{
browser.ScriptErrorsSuppressed = true;
browser.DocumentText = @"<html><head/><body><input id=""abc"" value=""this is the value in input""></body></html>";
// Wait for control to load page
while (browser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
dynamic d = (dynamic)browser.Document.DomDocument;//get de activex dom
var jengine = new Jint.Engine();
jengine.SetValue("document", d);
try
{
string val=jengine.Execute(@"var a=document.getElementById('abc').value;").GetValue("a").ToString();
Console.WriteLine(val);
}
catch (Jint.Runtime.JavaScriptException je)
{
Console.WriteLine(je);
}
}