Fragensteller
JS Code wird nicht geladen und im BrowserDebugger nicht sichtbar

Frage
-
HI,
habe bisher den JS code in der ASPX Seite direkt gehabt. Nun soll die Seite optimiert werden. Habe den <script>-code in meiner Content-Page am Ende drin:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderSectionID" runat="server"> ..... $(document).resize(function () { ... }); $(document).ready(function (e) { ... }); </asp:Content>
Jetz habe ich den Code in ein File myFct.js gesteckt und dann so in die ASPX Seite eingebunden:
<asp:Content ID....> ... <script src="/Scripts/MyFct.js" type="text/javascript"></script> </asp:Content>
Doch im Browser gibt es Probleme. Der Browser läd den JS-Code nicht und ich sehe nur, wenn ich das <script> Tag aufklappen will [CDATA] und 2 Funktionen, die Mitten im Code irgendwo stehen.
Als ich in VS2017 die Datei geladen habe, bekam ich auch eine Meldung von wegen und CodePage müsste geändert werden, da ansonsten einige Zeichen nicht korrekt dargestellt oder geladen werden können. Habe leider die genaue Fehlermeldung nicht mehr.
Was ist hier schief?
Gruß Hipp
- Bearbeitet Hipp1010 Samstag, 29. Februar 2020 09:15
Alle Antworten
-
Hi,
gibt es den Pfad http://deinserver/Scripts/MyFct.js überhaupt? Öffne mit F12 die Developer Tools und schau dir an, ob die Datei geladen wurde.
Bzgl. der Meldung brauchen wir die dann schon, um dir weiterhelfen zu können.
Ggfs. wähl mal "Speichern unter...". Dort kannst Du dann auch das Encoding einstellen. Welches Du auswählen musst, können wir dir nicht sagen, ich würde mal schauen, was bei der .aspx Datei voreingestellt ist (auch mal "Speichern unter..." wählen) und dasselbe dann für die .js Datei angeben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
So, habe Fehler gefunden. Script war in eigenem Unterverzeichnis. Obwohl in VS angelegt etc, konnte es nicht geladen werden. Habe es jetzt in /Scripts/ srin und es ist schin einmal sichtbar. Aber jetz scheint es ein Problem mit der Reihenfolge wie die Seite aufgebaut wird zu geben. Wenn ich das Script in die Seite am Ende vor </body> habe, läuft alles einwandfrei. Übers laden der *.js Datei nicht mehr. Alles was Document.ready ist klappt. Alle normalen Funktionen, die ich über einen Buton oder andere Elemente anspreche, haben hierbei Probleme:
var yearSelected = document.getElementById('<%=dropPromoActionYearHidden.ClientID %>').value;
Es scheint so, als würde das Element "dropPromoActionYearHidden" nicht gefunden werden, existiert also nicht.
Ist aber definitiv da:<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderSectionID" runat="server"> <form id="formSub" oncontextmenu="return false;"> ... <asp:Panel ID="panelSectionContent" runat="server" DefaultButton="buttonFilterID" CssClass="panelSectionContent"> <asp:Panel runat="server" ID="Panel1" ClientIDMode="Static" CssClass="promoPanelLine" Style="width: 500px; margin-"> <asp:Label runat="server" ID="lblYear" Text="Planungs-Jahr" CssClass="promoLineLabelRequired" Style="margin- margin-"></asp:Label> <asp:Panel runat="server" ID="panelDropActionYear" Style="height: 24px;" ClientIDMode="Static" CssClass="dropBoxNew"> <asp:DropDownList runat="server" ID="dropActionYear" ClientIDMode="Static" EnableViewState="true" CssClass="" AutoPostBack="true" onchange="ChangeActionYear();" OnSelectedIndexChanged="dropActionYear_SelectedIndexChanged" Style="outline: 1px solid transparent; margin- width: 119px; margin-right: 0px;"></asp:DropDownList> </asp:Panel> <asp:Panel runat="server" ID="openCloseMonthFilterID" onClick="OpenCloseMonthsShow();" ClientIDMode="Static" CssClass="openCloseMonthFilter"></asp:Panel> <asp:HiddenField runat="server" ID="dropPromoActionYearHidden" ClientIDMode="Static" Value="" /> </asp:Panel> ...
Wenn ich den Code der Function debugge, dann stoppt er mit dem Fehler dass kein ".value" von Null geben kann hier.
Und ich habe noch en Phänomen. Ich sehe im Debugger unter Scripts meine JS Datei mit den ganzen Funtionen. In der ASPX Dtei sehe ich aber nur das:
<script type="text/javascript"> //<![CDATA[ SetScrollPositionOfGridView();SetScrollPositionXOfGridView();//]]> </script>
Das sind 2 von etlichen Funktionen, die in der Datei sind. So wie es aussieht, wird die JS Datei nicht korrekt geladen. Aber warum?
Gruß Hipp
- Bearbeitet Hipp1010 Montag, 2. März 2020 10:06
-
Hi,
wenn dein Javascript Code in der HTML Ausgabe vor dem Feld an sich kommt und nicht erst später (wenn das Element im DOM verfügbar ist) getriggert wird, ist der Fehler verständlich.
Leider ist es bei solchen Konstrukten nur schwer möglich, das aus deiner Beschreibung heraus korrekt zu ermitteln. Stell die Seite, um die es geht, daher bitte online zur Verfügung, dann kann man sich das direkt ansehen und selbst im Browser debuggen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Ganze Codeseite posten muss ich erst intern in meiner Firma klären.
Aber der Call auf die JS Datei kommt ganz am Ende vor dem </asp:Content> Tag. Der HTML Code der Element komplett davor. Wir befinden uns hier zur Info in einem <asp:ContentPlaceHolder runat="server" ID="ContentPlaceHolderSectionID" /> Tag eies Site-Masters.
Gruß Hipp
-
Hi,
die serverseitige Verarbeitung ist in deinem Fall bereits abgeschlossen.
Die komplexe Struktur deiner Seite(n) macht es halt sehr schwer, das Problem reproduzieren zu können. WebForms sind nicht ohne Grund hoffnungslos veraltet und sollten gar nicht mehr verwendet werden.
In deinem Fall wird es evtl. immer noch daran liegen, dass die JS Datei überhaupt nicht geladen wird. ("Falsch" oder "nicht vollständig" gibt es hier nicht, da gibt es nur ganz oder gar nicht :)
Es bringt aber auch nur sehr wenig, wenn Du die WebForm, MasterPage, ... postest. Das dürfte wohl viel zu umfangreich sein. Wichtiger wären die relevanten Ausschnitte aus diesen Dateien und eine lauffähige Seite, die man online aufrufen kann, um dann zu schauen, was wo fehlt.
Ansonsten wäre es wahrscheinlich notwendig, sich das Ganze mal direkt bei dir, bspw. per Teamviewer, ... anzuschauen. Das würde (zumindest bei mir) aber nicht mehr in den Rahmen des kostenlosen Community Supports fallen. Bei Bedarf meld dich einfach kurz per Email bei mir.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport