2016-04-23 64 views
0

JScript1.js中的litte警告函數不起作用
它確實有效,但我無法再次使用它!
我乾淨,重建,重新啓動PC等
我的電腦Windows 10,微軟邊緣,VS 2010
我怎樣才能得到它的工作呢?
如果將一個新項目中的代碼複製到其中,請參見底部,在這種情況下,它會保存錯誤信息? 哦,我找到了解決方案!在asp.net masterpage中的javascript不會加載

我的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'); 
} 

Add in Site.Master under link-stylesheet next li NE:

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

在About.aspx添加下一行下約:

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

現在你有一個工作示例
但在某些時刻它不工作了,這怎麼可能?

解決方案:
VS負載後,並顯示該網頁,點擊重裝,我在我的情況下,它的工作!?!

+0

你可以檢查一件事,而不是'OnClientClick =「notify()」',編寫alert語句並檢查它是否會調用? –

+0

哦,我懷疑,它調用了該函數,但它會立即回發該頁面,因爲單擊按鈕。因此,只需簡單地添加返回false,取消按鈕的點擊事件,如「OnClientClick =」notify();返回false「 –

回答

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中進行更改時。