Question

Pour tout lien avec une classe CSS particulière, je voudrais contrôler si les liens s'ouvrent dans la même fenêtre, dans une nouvelle fenêtre ou dans une fenêtre contextuelle (à l'aide de onclick), en fonction de la sélection de l'utilisateur dans un groupe de radio. boutons - puis enregistrez ce choix dans un cookie (tous en utilisant jQuery). Quelqu'un sait comment y parvenir?

Était-ce utile?

La solution

C’est probablement ce que je ferais ... (vous aurez besoin du plug-in jQuery cookie ):

<script language="javascript">
$(function() {
    if($.cookie('link_pref')) {
    var link_pref = $.cookie('link_pref');
        $('#link_options_form :radio[value="'+ link_pref+'"]')
        .attr('checked','checked');
    }
    $.cookie('link_pref',$('#link_options_form :radio:checked').val(), {expires: 0});
    $('#link_options_form :radio').unbind('click').bind('click',function() {
         $.cookie('link_pref', $(this).val(), {expires: 0});
    });
    $('a').unbind('click').bind('click',function() {
        var link_pref = $.cookie('link_pref');
        var href = $(this).attr('href');
        var link_txt = $(this).text();
        switch(link_pref) {
            case 'new':
                $(this).attr('target','_blank');
                return true;
            case 'pop':
                window.open(href,link_txt,'width=640,height=480,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes');
                return false;
            case 'greybox':
                // Other options found here: 
                // http://orangoo.com/labs/greybox/advance_usage.html
                GB_show(link_txt, href);
                return false;
            default:
                $(this).attr('target','_self');
                return true;
        }
    });
});
</script>

<form id="link_options_form">
    <label><input type="radio" name="link_options" value="same" /> Open in Same Window</label>
    <label><input type="radio" name="link_options" value="new" /> Open in New Window</label>
    <label><input type="radio" name="link_options" value="pop" /> Open in Pop-Up Window</label>
    <label><input type="radio" name="link_options" value="greybox" /> Open in Greybox</label>
</form>

Modifier: Je regrette de ne pas l'avoir testé auparavant. J'ai eu quelques fautes de frappe et j'ai oublié de configurer le cookie pour commencer (désolé). Je l'ai testé et cela fonctionne maintenant avec votre code HTML. Utilisez le code nouvellement modifié ci-dessus. ; -)

Modifier 2: , j'ai ajouté un lien direct vers le plug-in cookie au cas où vous n'utiliseriez pas le bon plug-in pour une raison quelconque.

Modifier 3: Personnellement, je ne définirais pas le bouton radio comme vérifié en javascript ... vous pouvez accéder au même cookie dans votre langue côté serveur, je crois. Mais, j'ai fourni un moyen qui devrait fonctionner dans mon code nouvellement édité.

Modifier 4: Le paramètre initial du bogue des boutons radio coché a été corrigé. Cela devrait vraiment fonctionner cette fois-ci. Pour de vrai. o_0

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top