asp.net主页中的JavaScript无法加载

时间:2016-04-23 08:25:42

标签: javascript asp.net

JScript1.js中的我的litte警报功能不再起作用了 它确实有效,但我不能让它再次工作!
我做了清洁,重建,重启pc等 我的电脑Windows 10,Microsoft Edge,VS 2010
我怎样才能让它再次运转?
如果A复制新项目中的代码它正在工作,请参见底部,在这种情况下它是否存在错误的信息? 哦,我找到了解决方案!

我的网站。主持人:

<%@ 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中添加关于:

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

现在你有一个有效的例子 但是在某些时刻它不再起作用了,这怎么可能呢?

解决方案:
在VS加载并显示网页后,点击重新加载,我的情况下它正在工作!?!

1 个答案:

答案 0 :(得分:0)

问题是由于JScript1.js文件存储在浏览器缓存中。每次运行应用程序时,都会使用文件的缓存版本而不是当前版本。例如,如果您更改以下代码:

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

再次运行您的应用程序,除非您清除浏览器缓存(或者浏览器设置为自动清除它),否则您将看不到此新消息。

每次应用程序启动时,您都可以通过在文件名后附加不同的查询字符串来强制浏览器加载新的Javascript文件:

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

在实际应用程序中,最好强制浏览器仅在其内容被修改时下载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中进行更改时,应该更新程序集文件的版本(在项目的属性中)。