簡體   English   中英

無法加載asp.net主頁中的javascript

[英]javascript in asp.net masterpage doesn't load

我在JScript1.js中的提示警報功能不再起作用
它確實起作用了,但是我無法使其再次起作用!
我做了清理,然后重建,重新啟動PC等。
我的電腦Windows 10,Microsoft Edge,VS 2010
我怎樣才能使其再次正常工作?
如果A將代碼復制到新項目中正在工作,請參閱底部,在這種情況下,它持有錯誤的信息? 哦,我找到了解決方案!

我的Site.Master:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="WebJavascriptTest.SiteMaster" %>

<!DOCTYPE etc etc...">
<head runat="server">
 <script type="text/javascript" src="JScript1.js"></script>

我的About.aspx

-<%@ Page Title="About Us" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="About.aspx.cs" Inherits="WebJavascriptTest.About" %>

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>
        Javascript in file
    </h2>
    <asp:Button ID="B1" runat="server" Text="Button" OnClientClick="notify()" /

我的JScript1.js

function notify() {
    alert('notify test');
}

我正在工作的WebJava.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WebJava.aspx.cs" Inherits="WebJavascriptTest.WebJava" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" language="javascript">
    function Func() {
        alert("hello!")
    }
</script>
    <h2>
        Java Intern
    </h2>
    <asp:Button ID="B1" runat="server" Text="Button" OnClientClick="Func()" />

制作相同的測試項目添加新項目
ASP.NET Web應用程序
添加新項目JaScript文件名JScript1.js
將代碼放入JScript1.js

function notify() {
    alert('notify test');
}

在鏈接樣式表的下一行中添加Site.Master:

   <script language="javascript"  type="text/javascript" src="JScript1.js"></script>

在About.aspx中的about下添加下一行:

  <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="notify()" /><br />

現在您有一個可行的例子
但是在某些時候它不再起作用了,那怎么可能呢?

解:
VS加載並顯示網頁后,請單擊“重新加載”,以我為例,它正在工作!?!

該問題是由於JScript1.js文件存儲在瀏覽器緩存中這一事實引起的。 每次運行該應用程序時,都會使用文件的緩存版本,而不是當前版本。 例如,如果您更改以下代碼:

function notify() {
    alert('Notify 2');
}

並再次運行您的應用程序,除非清除瀏覽器緩存(或者將瀏覽器設置為自動清除),否則您將不會看到此新消息。

您可以通過在每次應用程序啟動時在文件名后附加一個不同的查詢字符串來強制瀏覽器加載新的Javascript文件:

<script type="text/javascript" src="JScript1.js?<%# DateTime.Now.Ticks.ToString() %>"></script>

在現實世界的應用程序中,最好僅在修改了JScript1.js的內容后才強制瀏覽器下載JScript1.js。 可以通過將文件版本附加到文件名(而不是時間刻度計數)來完成。 腳本聲明行可能看起來像這樣:

<script type="text/javascript" src="JScript1.js?version=<%# AppVersion %>"></script>

它將使用在代碼背后定義的AppVersion屬性:

public string AppVersion
{
    get
    {
        return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
    }
}

然后,在JScript1.js中進行更改時,應更新程序集文件的版本(在項目的屬性中)。

暫無
暫無

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

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