![](/img/trans.png)
[英]Masterpage javascript causes an object reference error when asp.net control doesn't exist in the content page
[英]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.