tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
397
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Ich bin dabei eine kleine Bildgalerie mit JS zu realisieren, dafür verwende ich zusätzlich das jQuery Framework.

    Nun habe ich aber ein kleines Problem. Ich möchte die Galerie ohne x Anfragen an den Server lösen. Dazu lade ich einfach alle Bilder in ein JS Array und arbeite dann ohne Seitenreload damit.
    Das Problem ist nun aber das man den Link auch an andere Personen weiterschicken können soll. Dazu nutze ich nun einfach die URL-Hash Funktion.
    Mit
    HTML-Code:
    $(window).bind(\'hashchange\', function() {showPic(returnID(window.document.location.hash)) ;})  
    Prüfe ich ob die URL verändert wurde. Das klappt soweit auch Problemlos ausser im InternetExplorer. Da klappt das ganze nicht...

    Nun meine Frage, wie bringe ich dem IE bei das er auf die URL Änderungen reagiert?
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von aargau Beitrag anzeigen
    Nun meine Frage, wie bringe ich dem IE bei das er auf die URL Änderungen reagiert?
    Der IE < 8 untersützt dieses Event nicht (http://caniuse.com/#search=hashchange).

    Hier ein Mini Plugin für dich, dass diese Lücke schließen sollte. Es pollt den hash und feuert das event bei Änderung.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    (function() {
        if (!("onhashchange" in window)) {
            var oldHash = location.hash;
     
            setInterval(function() {
                if(oldHash !== location.hash) {
                    oldHash = location.hash;
                    $(window).trigger('hashchange');
                }
            }, 20);
        }
    })();
     

  3. #3
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Dank dir für die schnelle Antwort.

    Das ganze klappt wunderbar Ich musste jedoch diese Zeile noch bearbeiten:
    Code javascript:
    1
    
       if (!("onhashchange" in window)) {
    gegen
    Code javascript:
    1
    
       if (!("hashchange" in window)) {

    Und schon läuft das ganze wunderbar im IE
     

  4. #4
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Jetzt bekommst du das Event in Browsern die es unterstützen doppelt ausgelöst, weil auch der Firefox hat keine "hashchange" Eigenschaft. "onhashchange" war eigentlich korrekt.

    Ich habe keinen IE parat. Wo genau hast du meinen Code hin gepackt? Er sollte unmittelbar nach dem jQuery Core kommen.
     

  5. #5
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    den Code habe ich direkt nach dem Einbinden des jquery script eingebunden un direkt darunter mein alter Code.

    Interessant ist das im IE9 welcher hashchange ja unterstützen sollte das ganze auch nicht klappt. hingegen wenn ich es gegen "hashchange" ersetze klappt es eben da auch, nur dann eben in anderen Browsern doppelt...
     

  6. #6
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von aargau Beitrag anzeigen
    hingegen wenn ich es gegen "hashchange" ersetze klappt es eben da auch, nur dann eben in anderen Browsern doppelt...
    Naja, "if(!('hashchange') in window)" ist so gut wie "if(false)", deshalb hat das mit dem umbenennen nur bedingt was zu tun. Das sollte so eigentlich funktionieren http://stackoverflow.com/questions/4...answer-4030510

    Ich habe hier mal nach geguckt (man nennt so was polyfill) https://github.com/Modernizr/Moderni...wser-Polyfills

    Ich empfehle das Plugin, weil mir der Autor bekannt ist: http://benalman.com/projects/jquery-hashchange-plugin/

    Sein Kommentar im Code sagt

    // Does the browser support window.onhashchange? Note that IE8 running in
    // IE7 compatibility mode reports true for 'onhashchange' in window, even
    // though the event isn't supported, so also test document.documentMode.
    doc_mode = doc.documentMode,
    supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
    Also erklärt das das Verhalten.
     

  7. #7
    aargau aargau ist offline Mitglied Brokat
    Registriert seit
    Oct 2006
    Ort
    Schweiz / Fricktal
    Beiträge
    322
    Das Plugin von benalman scheint die Lösung zu sein. Klappt so nun im IE Problemlos.

    Vielen Dank und schöne Festtage!
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 09.11.09, 19:05
  2. "anonyme Methode" kann nicht in den Delegattyp "System.Action<int>"konvertiert werden
    Von LL0rd im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 30.01.08, 12:58
  3. Antworten: 2
    Letzter Beitrag: 15.11.05, 09:10
  4. Antworten: 4
    Letzter Beitrag: 04.08.04, 20:34
  5. Warum läuft eine "Aktion" auf dem Webspace nicht ?
    Von Hoppenstedt im Forum HTML & XHTML
    Antworten: 5
    Letzter Beitrag: 16.02.04, 08:47