Ich meinte nicht, das du jQuery rausschmeißen sollst, dass ist deine Problem, ähm Entscheidung, wenn du das nutzt 😃
Ich meine nur du sollst deine Funktion mal in window.addEventListener ('load', function () { CODE }); packen (Natürlich in jQuery, keine Ahnung wie es da aussehen muss 😃.
Ich mag jQuery nicht, finde es zu unübersichtlich.
Also das $(".back-to-top").hide(); erst ausgeführt wird, wenn die Seite wirklich schon geladen ist.
was ist jQuery zu unübersichtlich=? Muharhar...
jQuery:
(function($) {
//DEIN CODE bei document ready
$(window).on("load", function() {
//DEIN CODE bei document full load
});
$(window).on("resize", function() {
//DEIN CODE bei resize
});
}(jQuery);
lustig find ichs eigentlich nicht... nunja...
Also, um auf die Anregung von Power-Poler eine belastbare Anwort zu geben:
Checken, ob das DOM geladen ist, ist die Grundlage und erste Funktion der meisten jQuery-Codes, und das geht, wie Teisinger anzudeuten versuchte, mit
$(document).ready(function() {
##CODE HIER, wird erst audgeführt, wenn Seite ganz geladen ist
oder kürzer ($(document).ready(function() wird z.B. vom Firebug angemeckert) einfach mit
$(function() {
##CODE HIER, wird erst audgeführt, wenn Seite ganz geladen ist
wie der geneigte Leser jetzt annehmen darf und wird, habe ich das auch so umgesetzt - und es geht trotzdem nicht... wie gesagt, zum Lachen ist's net....
zum einen die erste variante ist depricated und funktioniert mit jQuery >= 3 nicht mehr.
Zum anderen:
hast du schon einmal geguckt ob die events überhaupt ausgelöst werden? console.log / alert?
Vielen Dank für die prompte Antwort, und
genau DAS ist das Problem:
Ich habe das Script jetzt auf das Minimum eingedampft. Es wird auch angesprochen... wenn ich
ASDF $(function) reinschreibe, gibt es einen Error im FireBug
Sobald aber ein "funktionierendes" Script läuft, passiert ABSOLUT NICHTS - weder
$(function() {
alert("passiertwas");
});
NOCH
$(function() {
console.log( "passiertwas" );
});
liefert weder ein Popup noch einen Eintrag in der Console...
Dazu testweise das Ganze auf dem Desktop nachgebildet - hier funxt sowohl die ursprüngliche Version als auch die rudimentären Tests...
Ich weiß echt nicht mehr weiter...
Ah Ok, wusste ich nicht, dass $(function() dies bereits alles von sich aus macht.
Klingt aber dann danach, als ob das Event nicht feuert.
wie kein fehler im firebug? auch im chrome nix?
kann passieren wenn 2 jquery versionen gleichzeitig geladen werden.
du kannst ja mal:
console.log("test1");
(function($) {
console.log("jquery rennt");
$(window).on("load", function() {
console.log("event load funkt");
});
})(jQuery);
test1 muss auf jedenfall ausgegeben werden, sonst wird entweder die datei nicht eingebunden oder davor ist schon ein js fehler!
Danke für Ihre Antworten!
Tatsächlich dürfte es die letzten 2 Worte sein, die Teisinger tippte: "JS-Fehler"...
Ich hatte an dem Abend meines letztes Posts frustriert aufgegeben - dann gegen 22:00 noch mal die Kiste hochgefahren und die allerletzte Idee ausprobiert:
Im Header tummeln sich nämlich einige .js, die von meiner Vermutung nach von der Extension PerfectLightbox stammen. Keine doppelten .js-Bibliotheken, aber u.a.
https://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"
https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"
und das
script type="text/javascript" src="?load=effects,builder"
Also habe ich die Extension abgeschaltet.
Die Seite neu geladen...
UND DAS WAR'S! JS WIRD SOFORT AUSGEFÜHRT!!! ***KEUCH***
Jetzt stehe ich natürlich von dem Problem, entweder
a) eine andere Lightbox-Extension zu insten oder
b) den Fehler in der Extension zu suchen - denn der Kunde möchte sowohl den js-Schnickschnack, als auch ne Lightbox...
Wenn jemand zu a) nen Tipp hat, wird gerne genommen
Irgendwie ist die Lösung, die ich bereits gepostet hatte, verschwunden, deswegen hier nochmal:
"ein js fehler" von Teisinger trifft es ziemlich genau - nur, dass er nicht vom selbst-Gebauten kam.
SONDERN VON DER EXTENSION perfectlightbox!
Sie bringt eigenes jQuery mit - und bindet auch eigene jQ-Frameworks mit ein.
Extension deaktiviert - und jetzt läuft der einfache Code... doof nur, dass der Kunde natürlich weiterhin seine Lightbox haben will.
Ich versuche mal eine andere - bin aber natürlich gerne für Tipps offen.
ganz einfach global die Einbindung von JS Dateien deaktivieren bzw. löschen. Danach die benötigten JS-Files manuell includen:
### Erste Zeile löscht alle Includes von JS-Files auch die der Extensions, sofern du dein TS als letzten laden lässt.
page.includeJS >
page.includeJS {
file1 = path
.
.
.
etc.
}