使用c#触发javascript函数

时间:2014-07-25 00:03:55

标签: c# javascript html

我必须编写一个c#类来获取html页面的内容(该页面是公共的)并触发一个下载文件的javascript函数。

我的目标是下载文件并将其保存在文件夹

该页面是一个不需要登录的公共html页面。

链接如下所示:

href="javascript:__doPostBack(&#39;lbtSpreadsheet&#39;,&#39;&#39;)" style="font-weight: 700">Export Results</a>

doPostBack函数包含以下代码:

function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
    theForm.__EVENTTARGET.value = eventTarget;
    theForm.__EVENTARGUMENT.value = eventArgument;
    theForm.submit();
}

当您手动点击该链接时,它会提交表单并返回一个Excel表格,打开下载对话框,询问您需要保存的位置。

我想自动执行此操作以获取Excel工作表,然后对其进行处理。

我发现我可以在这样的页面上找到链接:

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(/* url */);
foreach(HtmlNode link in      doc.DocumentElement.SelectNodes("//a[@href]"))
{

}

但是如何触发链接中的javascript并保存返回的文件?

谢谢

2 个答案:

答案 0 :(得分:0)

我认为你不能。 C#服务器端Web客户端(如HtmlWeb或WebClient)只能理解HTTP / HTML,它们不是能够以与IE,Firefox或Chrome相同的方式执行javascript的完整Web浏览器。

答案 1 :(得分:0)

如果您希望文件下载在页面的onload期间自动启动而没有Export Results链接触发文件下载,那么您可以编写以下调用js函数的js脚本{{1而这反过来提供表单提交。

__doPostBack

或者当您的问题标题显示为window.onload = function() { __doPostBack (param1, param2); }; 时,您可以使用'trigger javascript function using c#'类从C#代码访问Javascript函数,该类是System.Web.UI的一部分

ScriptManager