Для любых ссылок с определенным классом CSS я хотел бы контролировать, будут ли ссылки открываться в том же окне, в новом окне или всплывающем меню (с использованием onclick), на основе по выбору пользователя из группы переключателей - и затем сохранить этот выбор в файле cookie (все с помощью jQuery). Кто-нибудь знает, как это сделать?Настройки канала связи с элементами управления радиокнигами и jQuery
ответ
Это, вероятно, как бы я это сделать ... (Вам понадобится jQuery cookie plugin):
<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>
Edit: Жаль, что я не проверял его первым. У меня было несколько опечаток, и я забыл сначала настроить cookie (извините). Я протестировал его, и теперь он работает с вашим HTML. Используйте недавно отредактированный код выше. ;-)
Редактировать 2: Я добавил прямую ссылку на плагин cookie на случай, если вы по какой-то причине не используете правильный.
Редактировать 3: Лично я бы не установил переключатель, как указано в javascript ... вы можете получить доступ к тому же файлу cookie на своем серверном языке, на который я верю. Но я предоставил способ, который должен работать в моем недавно отредактированном коде.
Редактировать 4: Исправлена ошибка, связанная с исправленной ошибкой переключателей. На этот раз он действительно должен работать. Серьезно. o_0
Спасибо за ваш ответ, Кайл, но я не мог заставить это работать. Вот полный код страницы, который я использовал: http://textsnip.com/734b04 - спасибо за вашу помощь. – user55655
Спасибо за вашу помощь! Я получил его на работу, но он вызывает множество ошибок в браузере. «Слишком много рекурсии», среди прочих. (Не уверен, что это значит). Также, как только я выбрал опцию «новое окно» и открыл ссылку, а затем снова выберите «то же окно», он все еще использует новое окно для ссылок. Есть идеи? Еще раз спасибо. – user55655
Я не уверен в проблеме рекурсии, так как я не зацикливаюсь ни на чем. Вы получаете ошибку в Firefox? Сколько ссылок у вас есть на этой странице? Это может быть проблемой. В любом случае исправлена ошибка «нового окна»/«того же окна». Я обновил код выше. – KyleFarris