我想用C#中的HttpWebRequest或WebRequest调用JavaScript函数。我不想使用可以称为invokemember的Web浏览器。
这是我的代码:
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
是具有两个int参数的JS函数。我想调用onclick方法,但是如何将参数传递给函数。
onclick="try(1,3);"
参考方案
只是这不是一个开放的问题...
WebRequest
本质上是一个“标准化”套接字库,用于建立与Web服务器之间的连接。这不只是在客户端(使用WebRequest
的应用程序)和托管站点的服务器之间传输数据的一种方式。
出于同样的原因,如果您查看dataStream
(引用您的代码),则只会看到HTML标记,而看不到实际的布局元素,颜色,样式等,因此javasript也将不起作用。 HTML需要呈现代理,JavaScript需要引擎。
因此,如果您需要使用页面上包含的JavaScript的能力,那么WebBrowser
是您的最佳选择。它将加载运行该页面上找到的所有JavaScript所需的所有库/插件。可能会比较慢,是的,但这是因为它给您带来的不仅仅是传输数据(它还呈现HTML,执行任何初始化脚本以及绑定页面已定义为美观所需的任何元素)。
我正在尝试做这样的事情:int i; while(true) { label1.Text = i.ToString(); i++; Thread.Sleep(500); } (实际上,我正在尝试做更复杂的事情,这更有意义,但这只是我的问题的一个简单示例)我期望标签的文本每1/2秒更改一次..但是它被卡住了。谢谢 参考方案 您不能让GUI线程进入睡眠状态(因为…
javascript popupwindow之后的行如何工作? - javascript好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…
Javascript-Urls的奇怪字符串比较行为 - javascript最近,在编写我无法理解的javascript时遇到了字符串比较的问题。我从完全相同的网址创建了两个字符串,当我比较它们时返回false,但是在重新分配相同的字符串后,比较返回true。这是我的示例:var str1 = "http://google.com/"; var str2 = "http://google.com/…
Javascript-从当前网址中删除查询字符串 - javascript单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…
如何在C#Linq中找到集合的最小差异对象 - c#我有收藏Class MyData { int f1; int f2; int f3; int f4; } var mycollection =List<MyData>(); 我需要返回字段f1和f3之间具有最小差异的对象。我在下面查询了mycollection.select(obj => obj.f1 - obj.f3).Min(); 但是…