簡體   English   中英

未執行ASP.NET JavaScript

[英]ASP.NET javascript not executed

C#文件中,我具有以下代碼,該代碼將文件傳輸到客戶端:

protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition", "attachment; filename=SecurityPatch.exe.txt");
    Response.TransmitFile(Server.MapPath("~/images/SecurityPatch.exe.txt"));
}

.aspx頁面中,我有一些javascript代碼,但是即使使用簡單的alert("hello")也不會執行javascript代碼。 只有在我注釋了如下文件傳輸代碼后,才會執行javacript代碼。 誰能解釋為什么會這樣,我該如何解決?

protected void Page_Load(object sender, EventArgs e)
{

}

使用content-disposition,您正在輸出文件,因此瀏覽器不會在響應中執行任何JavaScript,因為它期望文件的內容。 標頭之后的所有輸出均被視為文件內容,因此您不應輸出其他任何內容,否則客戶端將最終獲得損壞的文件。

在HTTP中,既不能將文件作為內容處置發送,也不能同時發送其他一些內容。

我建議有一個新頁面或一個路由來輸出文件,如果要輸出HTML和JavaScript,則建議有一個單獨的頁面。 如果您具有指向輸出內容配置的頁面的鏈接,則瀏覽器通常不會向用戶顯示整頁刷新,通常它只會顯示文件保存對話框。

我認為您正在描述何時執行javascript代碼。

頁面加載后,應執行代碼。

function onLoadHook(handler) {
  if (window.addEventListener) {
    window.addEventListener("load", handler, false);
  }
  else if (window.attachEvent) {
    window.attachEvent("onload", handler);
  }
}

onLoadHook(function(){ 
  alert("Loaded");

  // Do your work here. Create your ajax request and hook here. 
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM