Changeset 58817 in spip-zone


Ignore:
Timestamp:
Feb 24, 2012, 6:30:12 PM (8 years ago)
Author:
bystrano@…
Message:

meilleure facon de regler les problemes avec les liens qui declanchent du javascript (cf commits precedents)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ajax_nav/ajax_nav.js

    r58809 r58817  
    99    var onAjaxNavReq            = $.Event("onAjaxNavReq"),
    1010    onAjaxNavLoad               = $.Event("onAjaxNavLoad"),
    11     onAjaxNavLocalisedLoad      = $.Event("onAjaxNavLocalisedLoad");
     11    onAjaxNavLocalisedLoad      = $.Event("onAjaxNavLocalisedLoad"),
     12    HOST                        = History.getState().url.replace(/^https?:\/\/([^\/]+).*$/, '$1');
    1213
    1314    function addUrlParam(url, param, value) {
     
    136137                // on ne change rien pour les ctr-click etc.
    137138                if ( event.which === 2 || event.metaKey ) { return true; }
    138                 // TODO faire mieux que ce bricolage, genre comparer avec
    139                 // un liste d'extensions, comme jpg, mp3, etc.
    140                 // Ou alors marquer les liens ajax_nav cote serveur...
    141                 if ($(this).hasClass('thickbox')) { return true; }
     139                // on ne fait rien pour les liens sans cible (pur javascript)
     140                if (this.href === '') { return true };
     141                // on ignore aussi les liens qui ne sont que des ancres
     142                if ($(this).attr('href').match(/^#/)) { return true; }
     143                // on ne fait rien pour les liens externes
     144                if ( $(this).attr('href').match(/^https?:\/\/([^\/]+).*$/) &&
     145                     (HOST !== $(this).attr('href').replace(/^https?:\/\/([^\/]+).*$/, '$1'))) {
     146                    return true;
     147                }
    142148                // ignore les liens ajax cree par spip
    143149                if ($(this).hasClass('noajax')) { return true; }
     150                // on ignore les liens qui ont un extension qui n'est pas susceptible de cibler
     151                // une page a charger en ajax.
     152                if ( ( $(this).attr('href').match(/^.*\.([a-zA-Z0-9]{1,4})$/) ) &&
     153                     ( $.inArray($(this).attr('href').replace(/^.*\.([a-zA-Z0-9]{1,4})$/, '$1'),
     154                                 ['html', 'htm', 'php', 'php3']) === -1 )) {
     155                    return true;
     156                }
    144157                History.pushState(null, null, $(this).attr('href'));
    145158                event.preventDefault();
     
    147160            });
    148161            return;
     162        });
     163        // A chaque fois qu'un bloc ajax spip est charge, il faut a nouveau preparer son contenu.
     164        $(selector + ' .ajaxbloc').bind('ajaxComplete', function () {
     165            prepareForAjax('.ajaxbloc');
    149166        });
    150167        // on attribue la classe ajax_nav aux elements a charger en ajax.
Note: See TracChangeset for help on using the changeset viewer.