March 4th, 2005

Teapot

style=mine v 2.0

ssrСергей Сергеевич недавно писал про то как сделать кнопку, позволяющую просматривать чужой журнал в своём стиле, для тех кто не видел, я повторюсь о чём шла речь.

Если стиль журнала или страницы с комментариями у человека откровенно нечитаем, то его можно заменить на свой приписыванием к url строчку style=mine. Тогда стиль в журнале пишущего автоматически сменится на стиль, который используется в журнале читающего. ssrСергей Сергеевич предлагал автоматизировать процесс, создав в браузера закладку (многие браузеры позволяют делать закладку кнопкой), которая вместо адреса назначения будет содержать строку

javascript:location.href=location.href+'?style=mine';

Этот скрипт прост и красив, но имеет небольшой недостаток: он неправильно обрабатывает ссылки на комментарии, когда ссылка оканчивается на что-то вроде ?thread=2466766#t2466766. Пришлось написать более сложную версию:

javascript:sm="style=mine";ap=location.href.indexOf("#");if (ap<0) ap=location.href.length; ab=location.href.substring(0, ap); aa=location.href.substring(ap, location.href.length);re=new RegExp("\\?"+sm+"$|"+sm+"&|&"+sm, "gi");abn=ab.replace(re, "");if (abn==ab) {abq=abn.indexOf("?"); if (abq<0) {abn+="?"+sm;} else {if (abq==abn.length-1) {abn+=sm;} else {abn+="&"+sm;};};}; location.href=abn+aa;

Эта версия обрабатывает более сложные случаи, а кроме того, позволяет выключать режим повторным нажатием на кнопку (или если ссылка уже содержала конструкцию style=mine). Скрипт опробован в Opera, IE и Firefox.

Кстати, новый скрипт также легко модернизировать, сменив конструкцию "style=mine" на что-нибудь другое, если нужно.