我必须编写一个c#类来获取html页面的内容(该页面是公共的)并触发一个下载文件的javascript函数。
我的目标是下载文件并将其保存在文件夹
中该页面是一个不需要登录的公共html页面。
链接如下所示:
href="javascript:__doPostBack('lbtSpreadsheet','')" 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并保存返回的文件?
谢谢
答案 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