【问题标题】:Invoking javascript file with dom access使用 dom 访问调用 javascript 文件
【发布时间】:2015-12-26 10:53:07
【问题描述】:

我有一个带有 DOM 访问代码的 javascript 文件

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 文件。

我想知道的是:

  1. 有没有办法将变量值从 JavaScript 传回 C#?

  2. 如何让 JavaScript 评估 HTML 文件中的 DOM 元素?

【问题讨论】:

  • 你为什么不尝试 MVC 4?

标签: javascript c# webbrowser-control visual-studio-2015 jint


【解决方案1】:

使用 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);
            }
        }

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 2021-01-30
    • 1970-01-01
    • 2010-09-27
    • 2017-07-18
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多