IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

window.applicationCache et Firefox [API HTML5]


Sujet :

JavaScript

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Points : 204
    Points
    204
    Par défaut window.applicationCache et Firefox
    Bonjour,
    Firefox ne supportant pas les gestionnaires d'évenement de cette API
    Je pensais bidouiller un code permettant de rafraichir la page au moins une fois pour accéder à une nouvelle version du cache via une valeur stocker dans un cookie ou via localStorage
    firefox ne gere pas non plus window.applicationCache.update() ou
    window.applicationCache.swapCache()
    alors je me suis dit creons un cookie si le cookie n'existe pas on rafraichi via window.location.reload() et si le cokie existe on rafraichi pas et on detruit le cookie en quittant la page via window.onunload mais firefox que j’appellerai bugZilla ne reconnait pas cet événement...

    J'arrive à ce type de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function getVersion(){
     
    var numberVersion=8;//Numero de la nouvelle version 
    var numberStorage=parseInt(localStorage.getItem("version"),10);
    alert(typeof numberVersion+":"+typeof numberStorage);
    if(numberStorage!=numberVersion){
    alert(numberStorage+"!="+numberVersion+"=Mise à jour");
    localStorage.setItem("version",String(numberVersion));
    /*numberStorage=numberStorage++;
     
    localStorage.setItem("version",String(numberStorage));*/
    clearInterval(timer);
    window.location.reload();//pour acceder au cache 
    } 
    else{
     
    alert(numberStorage+"=="+numberVersion+"=Pas de mise à jour");
    clearInterval(timer);
     
    }
    }
    Algorythmiquement faux
    je dois juste rafraichir une fois la page pour que le nouveau cache au cas ou il y a une mise à jour soit chargé mais window.location.reload réexécute TOUT le code et donc la page est rafraichie sans arrêt ce qui est un non sens quand on a un site web utilisant le cache et ajax ...
    Si quelqu'un à une idée merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Points : 204
    Points
    204
    Par défaut
    Honte à moi
    En gros il s'agissait de créer un Si le cookie existe :le détruire Sinon le créer et rafraichir la page
    ma pseudo classe Cookie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    function Cookie(){
    this.__constructH=function(name,value,path,host){ 
    oDate=new Date(2014,11,21,17,12,02);
    document.cookie=name+"="+escape(value)+"; expires="+oDate.toGMTString()+";path="+path+";host="+host+"";
     
    }
     
    this.__constructD=function(name,value,path,domain){ 
    oDate=new Date(2014,12,25,23,30,45);
    document.cookie=name+"="+escape(value)+"; expires="+oDate.toGMTString()+";path="+path+";domain="+domain+"";
     
    }
    this.getCookie=function(name){
    if(document.cookie.indexOf(";",0)!=-1){
    var sValue="";
    var valueOfCookie=document.cookie.split(";");
    searchName:
    for(var i=0;i<valueOfCookie.length;i++){
    if(valueOfCookie[i].indexOf(name+"=",0)!=-1){
    sValue=valueOfCookie[i].substring(valueOfCookie[i].indexOf(name+"=",0),valueOfCookie[i].length);
    aValue=sValue.split("=");
    break searchName;
    }
    }
    return aValue[1];
    }
    else{
    if(document.cookie.indexOf(name+"=",0)!=-1){
    sValue=document.cookie.substring(document.cookie.indexOf(name+"=",0),document.cookie.length);
    aValue=sValue.split("=");
     
    return aValue[1];
     
    }
    }   
    }
    this.getCookies=function(){
    return document.cookie;
    }
    this.CookieExist=function(name){
    if(document.cookie.indexOf(";",0)!=-1){
     
    var valueOfCookie=document.cookie.split(";");
     
    for(var i=0;i<valueOfCookie.length;i++){
    if(valueOfCookie[i].indexOf(name+"=",0)!=-1){
    return true;
    }
     
    }
     
    }
    else{
    if(document.cookie.indexOf(name+"=",0)!=-1){
    return true;
    }
    }   
    }
    this.deleteCookieD=function(name,domain){
    oDate=new Date(2000,12,25,23,30,45);
    document.cookie=name+"=xxxxx; expires="+oDate.toGMTString()+";path=/;domain="+domain+""; 
    }
    this.deleteCookieH=function(name,host){
    oDate=new Date(2000,12,25,23,30,45);
    document.cookie=name+"=xxxxx; expires="+oDate.toGMTString()+";path=/;host="+host+""; 
    }
    }
    et mon code tout simple pour rafraichir la page une fois (les pages sont générées via localStorage donc pas d'actualisation de la page ensuite)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if(window.applicationCache){
     
    var oCookie=new Cookie();
     
     
    if(oCookie.CookieExist("version")==true){
    alert("Le cookie existe");
    oCookie.deleteCookieD("version",document.domain);
    if(oCookie.CookieExist("version")!=true){ alert("Le cookie n\'existe plus"); }
    }
    else{
    alert("Le cookie n\'existe pas");
    oCookie.__constructD("version","Ok","/",document.domain);//On créé le cookie valeur Ok 
    window.location.reload();
     
    }
    }
    Voilà au cas ou ça intéresse quelqu'un

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Où as-tu lu que Firefox ne gérait pas les évènements de l'applicationCache ? Ils sont documentés sur https://developer.mozilla.org/en-US/...lication_cache donc je suppose qu'ils sont bel et bien implémentés sur Firefox.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Points : 204
    Points
    204
    Par défaut
    Bonjour
    et bien déja j'ai testé les differents gestionnaires d’événement qui fonctionnent sur tous les navigateurs sauf Firefox j'ai la version 22.0
    Ensuite il y a https://bugzilla.mozilla.org/show_bug.cgi?id=832497
    https://bugzilla.mozilla.org/show_bug.cgi?id=769171
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function onUpdateReady() {
        window.applicationCache.swapCache();
        if (confirm('A new version of this site is available. Load it?')) {
            window.location.reload();
        }
    }
    window.applicationCache.addEventListener('updateready', onUpdateReady);
    if (window.applicationCache.status === window.applicationCache.UPDATEREADY) {
        onUpdateReady();
    }
    Code qui ne fonctionne pas sur firefox
    Si il y a un code fonctionnant sous firefox je suis preneur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage de window.frames sur firefox
    Par marry dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/03/2010, 12h03
  2. window.open et Firefox
    Par Will Fou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/08/2008, 09h02
  3. window.showModalDialog sous FireFox
    Par freud dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/03/2008, 21h00
  4. window.open IE/FIREFOX
    Par odelayen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 14h32
  5. window.open et Firefox
    Par Pierrick dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 06/10/2005, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo