能否从C# WinForms调用JavaScript方法?

5
我有一个JavaScript文件,其中包含一些方法。我想从我的winform应用程序中调用这些方法。这是可能的吗?如果可以,你能给我一个简单的例子吗?
我尝试过像这样的方式:
Process.Start("javascript:showuser('User1');return false;");
但它无法识别showuser方法。因为我的js文件位于远程位置(例如:http://mysite.com/userprofile.js
你能帮我做到这一点吗?
谢谢

也许这个解决方案会有用。 - garik
3个回答

10

您可以使用WebBrowser控件。这里有一个示例文章

webBrowser1.DocumentText = 
    @"<html><head>
      <script type='text/javascript'>
      function testFunction() {
          alert('test');
      }
      </script>
      </head><body></body></html>";
webBrowser1.Document.InvokeScript("testFunction");

嗨,感谢您的回复。但是您能告诉我在我的应用程序中应该在哪里添加js文件吗?或者如何引用位于远程位置的js文件? - Nagu
在我的示例中,我使用了内联脚本,但你也可以通过使用 src 属性来引用你的 JavaScript: <script type='text/javascript' src='http://mysite.com/userprofile.js'></script> - Darin Dimitrov
嗨,很抱歉它对我不起作用。我不知道出了什么问题。即使警报消息也没有出现。 - Nagu
2
设置DocumentText后,您必须处理DocumentCompleted事件,并在处理程序中进行InvokeScript调用。 - ShdNx

8
你可能需要使用 Microsoft.JScript.dll 的引用,以及类似于 Evaluator 方法(从这里); 但是你到底想做什么?如果你想脚本化你的 winform,我会倾向于使用IronPython。如果你想自动化一个浏览器,你可以使用 WebBrowser 控件。

2
为了能够暴露COM对象,您必须设置以下内容:

[ComVisible(true)]

在你的命名空间中(不在你的类中)

类似于:

namespace webform
{
    [ComVisible(true)]

    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接