2016-04-23 12 views
0

Meine kleine Alarmfunktion in JScript1.js funktioniert nicht mehr
Es hat funktioniert, aber ich kann es nicht wieder zum Funktionieren bringen !!!
Ich habe sauber, und wieder aufzubauen, PC neu starten usw.
Mein PC Windows 10, Microsoft Edge, VS 2010
Wie kann ich es wieder funktioniert?
Wenn A den Code in einem neuen Projekt kopieren, funktioniert es, siehe unten, in welchem ​​Fall es falsche Informationen enthält? Oh ich habe eine Lösung gefunden!Javascript in asp.net masterpage lädt nicht

Mein 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> 

Mein 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()"/

Mein JScript1.js

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

Mein Arbeits 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()" /> 

man einen gleicher Testprojekt neuen Projekt
ASP.NET Web-Anwendung
hinzufügen neuen Element JaScript Dateiname JScript1.js
Put Code in JScript1.js

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

hinzufügen in Site.Master unter Link-Sheet nächster li ne:

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

nächste Zeile in About.aspx unter etwa hinzufügen:

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

Jetzt haben Sie ein funktionierendes Beispiel
Aber irgendwann nicht mehr funktioniert, wie ist das möglich?

Lösung:
Nach VS Last und zeigt die Webseite, klicken Sie auf Reload, ich meinen Fall, dass es funktioniert!?!

+0

Können Sie eine Sache überprüfen, anstelle von 'OnClientClick =" notify() "', Alarmanweisung schreiben und prüfen, ob es anruft oder nicht? –

+0

Oh ich vermute, dass es diese Funktion aufgerufen hat, aber es postback diese Seite sofort als Schaltfläche geklickt wird. Fügen Sie also einfach return false hinzu, um das Klickereignis der Schaltfläche abzubrechen, z. B. 'OnClientClick =" notify(); return false "' –

Antwort

0

Das Problem wird durch die Tatsache verursacht, dass die JScript1.js-Datei im Cache des Browsers gespeichert ist. Jedes Mal, wenn Sie die Anwendung ausführen, wird die zwischengespeicherte Version der Datei anstelle der aktuellen Version verwendet. Zum Beispiel, wenn Sie den Code für ändern:

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

und Ihre Anwendung erneut ausführen, werden Sie sehen, diese neue Nachricht nicht, wenn Sie klar Ihren Browser-Cache (oder wenn der Browser eingestellt ist, um es zu deaktivieren automatisch).

Sie den Browser erzwingen kann die neue Javascript-Datei zu laden, indem Sie einen anderen Abfrage-String an die Dateinamen angehängt wird die Anwendung jedes Mal startet:

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

In realen Anwendungen ist es vorzuziehen, um den Browser zu zwingen, JScript1.js nur herunterladen, wenn sein Inhalt geändert wurde. Dies kann durch Anhängen der Dateiversion an den Dateinamen erfolgen (anstelle einer Zeitzählung). Das Skript Deklarationszeile könnte wie folgt aussehen:

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

, die eine AppVersion Eigenschaft definiert in Code-Behind verwenden würde:

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

Die Version der Assembly-Datei sollte dann aktualisiert werden (in den Eigenschaften das Projekt), wenn eine Änderung in JScript1.js vorgenommen wird.

Verwandte Themen