如何在 C# 上使用参数调用 JavaScript 函数

本文关键字:参数 调用 JavaScript 函数 | 更新日期: 2023-09-27 18:32:16

我想用 HttpWebRequest 或 C# 中的 WebRequest 调用 JavaScript 函数。我不想使用可以调用 invokemember 的网络浏览器。

这是我的代码:

public void MyWebRequest(string url, string method, string data)
{  
       request = WebRequest.Create(url);
        if (method.Equals("GET") || method.Equals("POST"))
        {
            // Set the Method property of the request to POST.
            request.Method = method;
        }
        else
        {
            throw new Exception("Invalid Method Type");
        }
       string postData = data;
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = byteArray.Length;
        dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
}
MyWebRequest("http://example.com", "POST", "javascript:onclick='"try(1,3)'"");

try是一个JS函数,它有两个int参数。我想调用 onclick 方法,但是如何将参数传递给函数。

onclick="try(1,3);"

如何在 C# 上使用参数调用 JavaScript 函数

只是为了不是一个开放式的问题......

WebRequest本质上是一个"美化"的套接字库,用于与 Web 服务器建立连接。它只不过是在客户端(使用WebRequest的应用程序)和托管站点的服务器之间传输数据的一种方式。

出于同样的原因,如果您查看dataStream(引用您的代码),您只会看到HTML标记,而看不到实际的布局元素和颜色,样式等,javasript也不起作用。HTML需要一个渲染代理,JavaScript需要一个引擎。

因此,如果您需要使用页面上包含的JavaScript的能力,WebBrowser是您最好的选择。它将加载运行页面上找到的任何 JavaScript 所需的任何库/插件。是的,它可能更慢,但那是因为它为您提供的不仅仅是传输数据(它还呈现 HTML,执行任何初始化脚本,并绑定到页面定义为美学所必需的任何元素。