Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Архив » Обновленный спойлер


Обновленный спойлер

Сообщений 41 страница 60 из 328

41

Установила этот скрипт вместо аналогичного старого и вот какая проблемка появилась - мы под спойлер прячем картинки. Старый спойлер открывал их в нормальном размере, а этот очень сильно уменьшает картинку. Можно как то исправить? Адрес форума в профиле

0

42

решил немного оптимизировать свою версию спойлера
скрипт сократился где то на 30%, что само по себе очень даже неплохо
убрал формирование строки, парсинг тега, древний метод добавления кнопки и прочую лабудень,
добавил регулярку, уменьшил кнопку до нормального размера (16х16) [реклама вместо картинки]
таким же макаром оптимизировал скрипты фотогалереи и shadowbox - Итог, главная страница моего форума сократилась с 54 кб, до 35 и соответственно стала загружаться быстрее

Cокращённый скрипт обновлённого спойлера

итак вот сам оптимизированный скрипт спойлера
в html-верху всё остаётся как прежде
в html-низ:

Код:
<!--Spoiler v.2.3-->
<script type="text/javascript">
function tag_spolier()
{var FoundErrors = '';
var enterTITLE = prompt("Введите описание скрытого текста", 'Спойлер');
bbcode('[spoiler]',('|'+enterTITLE+'[/spoiler]'));}
$(function(){
$("div.quote-box > cite > input.spoiler-button").click(function(){
$(this).parents("div.quote-box").find("blockquote.quote-box").toggle("normal");
var a = $(this).attr('value');$(this).attr('value',$(this).attr('id'));$(this).attr('id',a);
   }); });
$('td#button-code').before('<td style=\'background-image:url("http://img706.imageshack.us/img706/1943/spoiler.gif")\' onclick="tag_spolier()"><img src="/i/blank.gif" alt="Спойлер"></td>');
$("div.post-content").map(function () {
text = $(this).html();
if(text.indexOf("[/spoiler]" ) != -1) {
spoilerr = /\[spoiler\]([^`]*?)\|(.*?)\[\/spoiler\]/gi
$(this).html(text.replace(spoilerr, "<div class='quote-box' style='padding:1px;background: none;border: 0;'><cite style='width:100%;margin:0;'><input id='close' class='spoiler-button' style='width:140px;font-size:10px; margin:0; cursor: pointer; font-weight:bold' type='button' value='$2'></cite><blockquote class='quote-box' style='display:none; width:100%;border: 1px solid black;margin:0;'>$1</blockquote></div>")) 
} }); 
</script>

в закрытом виде на кнопке спойлера будет то название, которое вами присвоено, а в открытом виде всегда close -закрыть

меньше кода - шустрее работа ;)

Отредактировано Romych (Пт, 5 Ноя 2010 12:22:09)

+2

43

ложная тревога -

Отредактировано Deisy- (Чт, 29 Июл 2010 18:34:18)

0

44

А можете дать код этого спойлера:
http://topmobile.wesky.ru/viewtopic.php?id=758#p890
Чтобы название самой писать. когда открываетсяодно чтобы была, а закрыть другое.
как тут.
заранее спасибо.
жду ответа

0

45

код этого
ввот пример:
[spоiler=имя кнопки закрытого спойлера|имя кнопки открытого спойлера]string[/spоiler]

0

46

mkusher :rolleyes:  И еще вопрос....
Можно ли в Скрипте спойлера делать анализ при выводе отображении на class="code-box" и там, внутри него не считывать BB код cпойлера ???

PS: ( аналогичные штуки при отображении в  "code-box" возникают при всех новведенных BB кодах, возможно эту проверку стоит сделать функцией и включать её в тот жа плеер Romych, достаточно противно когда хочешь дать код плеера или спойлера с уже установленными скриптами, а оне там отображаются вместо скрипта, ну и вообще - даешь код страницы.. если там есть BB коды не фирменные, обязательно глюк..

Отредактировано Deff (Пн, 4 Окт 2010 13:47:23)

0

47

Deff написал(а):

Можно ли в Скрипте спойлера делать анализ при выводе отображении на class="code-box" и там, внутри него не считывать BB код cпойлера ???

конечно можно, я даже предполагаю как, но пока не делал

0

48

Белк@

<script type="text/javascript">
            function tag_spoiler(){
                var y = prompt("Введите описание закрытой кнопки", '');
                if (y != 'null' && y != '' && typeof(y) != 'object' && typeof(y) != 'undefined') {
                    var x = prompt("Введите описание открытой кнопки", '');
                    if (x == 'null' || x == '' || typeof(x) == 'object' || typeof(x) == 'undefined')
                        bbcode('

+ y +

', '

');
                    else
                        bbcode('

+ y + '|' + x +

', '

');
                }
                else
                    bbcode('

Свернутый текст

', '

')
            }
            function addSpoiler(str, from, internal){
                var pos = 0, pos2 = 0, pos_c = 0, pos_l = 0, newpos = 0, string = '', close = '', open = '';
                if ((pos = str.indexOf("[spoiler", from)) == -1)
                    return str;
                if ((pos2 = str.indexOf("[/spoiler]"), pos + 9) == -1)
                    return str;
                if (((pos_c = str.indexOf("]", pos + 8)) != -1) && ((pos_c != pos + 8) && (pos_c != pos + 9))) {
                    string = str.substring(pos + 9, pos_c);
                    if ((pos_l = string.indexOf("|")) != -1) {
                        close = string.substring(0, pos_l);
                        open = string.substring(pos_l + 1, string.length);
                    }
                    else {
                        close = string;
                        open = string;
                    }
                }
                else {
                    close = 'Показать спойлер';
                    open = 'Скрыть спойлер';
                }
                newpos = str.indexOf("[spoiler", pos + 9)
                if (newpos < pos2 && newpos != -1)
                    str = addSpoiler(str, pos + 9, true)
                if ((pos2 = str.indexOf("[/spoiler]", pos + 9)) == -1)
                    return str;
                str = str.substring(0, pos) + makeSpoiler(str.substring(pos_c + 1, pos2), open, close) + str.substring(pos2 + 10, str.length)
                if (str.indexOf("[spoiler") != -1 && internal == false)
                    str = addSpoiler(str, 0, false)
                return str;
            }

            function makeSpoiler(txt, open, close){
                txt = '<div class="quote-box" style="padding:1px;background: none; border: 0;"><cite style="width:100%;margin:0;"><a id="' + open + '" class="spoiler" style="width:100%;font-size:10px; margin:0;border:none;cursor:pointer;text-align:left;">'+close+'</a></cite><blockquote class="quote-box" style="display:none; width: 95%;border: 1px solid black;margin:0;">' + txt + '</blockquote></div>'
                return txt;
            }

            $(document).ready(function(){
                $("div.quote-box > cite > a.spoiler").click(function(){
                    $(this).parents("div.quote-box:first").find("blockquote.quote-box:first").toggle("slow");
                    var a = this.innerHTML;
                    this.innerHTML= $(this).attr('id');
                    $(this).attr('id', a);
                });
            });

            if ((document.URL.indexOf("viewtopic.php") != -1) || (document.URL.indexOf("post.php") != -1)) {
                elm = document.getElementById("pun-main").getElementsByTagName("div")
                for (x in elm)
                    if (elm[x].className == "post-content") {
                        var post = elm[x]
                        post.innerHTML = addSpoiler(post.innerHTML, 0, false)
                    }
            }
            if(form=document.getElementById("answer"))
                form.getElementsByTagName("tr")[0].insertCell(1).innerHTML="<img  id=\"spoiler\" title=\"Спойлер\" onclick=\"tag_spoiler('

Свернутый текст

','

')\" src=\"/i/blank.gif\" />"
</script>

0

49

Romych написал(а):

Cокращённый скрипт обновлённого спойлера

Romych, отличная штука стала еще лучше. Спасибо!
Но просьба: на некоторых форумах работают теги [cut][/cut], и заключенный между ними текст прячется под ссылкой (по умолчанию "Читать далее"), а то длинные тексты, хотя и полезные, мешают просмотру страниц. У нас этот тег не работает, но Ваш спойлер его прекрасно заменяет.
И все бы хорошо, но требуется лишний раз нажать Ок, а не все это правильно понимают, не там нажимают, портят название (оно выделено ведь) и т.д.
Нельзя ли сделать, чтобы промежуточное окно не показывалось? Чтоб так: выделил текст, нажал кнопку спойлера - и готово!
----------------------------------
Еще вдруг выявилась проблема: для некоторых текстов Spoiler v.2 не срабатывает! Так и остается в виде кодов. Я разглядывал, в чем отличие - и в этих текстах несколько квадратных скобок.
А еще вне скрытого остаются прикрепленные картинки - но это уже непринципиально.
Romych, нельзя ли усовершенствовать? Пожалуйста!
------------------------
Вот специально проверил - да, Spoiler v.2 не срабатывает, если в тексте есть квадратные скобки. Однако такие же скобки стандартных тегов не мешают.
Но еще есть что-то, мешающее некоторым текстам скрываться...
.................................
Похоже, просто есть определенная длина текста, больше которой Spoiler v.2 "не берет". Других причин не обнаружил. При разбиении на части всё работает, но это выглядит нелепо.
Вот бы снять это ограничение!

Отредактировано Makarius (Чт, 14 Окт 2010 16:00:17)

0

50

Makarius написал(а):

Похоже, просто есть определенная длина текста, больше которой Spoiler v.2 "не берет". Других причин не обнаружил. При разбиении на части всё работает, но это выглядит нелепо.
Вот бы снять это ограничение!

да ограничение есть, но оно регулируется в скрипте ищите вот такую строку:

spoilerr = /\[spoiler\]([^\[]{1,11000})\|(.*?)\[\/spoiler\]/g

вот это - 1,11000 ограничение символов под спойлером от 1 до 11000, увеличивайте вместо 11000, сколько считаете нужным

+1

51

Romych, спасибо! Увеличил до 40000, и во всех случаях теперь Ваш спойлер работает!
Но кроме одного: если в тексте есть квадратная скобка. Хотя такие же скобки в тегах - и ничего, не влияют... Секрет какой-то!

Отредактировано Makarius (Сб, 16 Окт 2010 18:19:36)

0

52

Romych
да, действительно, а какой профит от того, что ты запрещаешь открывающуюся скобку внутри тега?

+1

53

mkusher написал(а):

действительно, а какой профит от того, что ты запрещаешь открывающуюся скобку внутри тега?

потому, что по-большому счёту ни к чему квадратные скобки обрамляющие слово в посте внутри спойлера,
но даже если разрешить их применение
и регулярка получится такой ---- spoilerr = /\[spoiler\]([^]{1,11000})\|(.*?)\[\/spoiler\]/g
то два спойлера в одном посте уже будут работать некорректно, так что в любом случае из-за этих квадратных скобок регулярку придётся переписывать

+1

54

Romych написал(а):

потому, что по-большому счёту ни к чему квадратные скобки обрамляющие слово в посте внутри спойлера,

Совершенно верно, и в обычных сообщениях никто этих скобок не применяет. Но если помещаются научные статьи, патенты, авторефераты и т.п. - там этих скобок полно: видимо, есть какая-то мода - ссылки на литературу и авторов давать в квадратных скобках. Проблема возникает лишь из-за этого.
Но я попробую изменить, как Вы показали, и если будет работать нормально - тогда гораздо проще в инструкции по использованию указать, что в одном посте более одного спойлера применять нельзя. Тут ведь он нужен для конкретной цели - скрыть длинный текст, разве кроме его начала. И два спойлера в одном посте в таком случае действительно ни к чему. Вот испытаю в деле, и тогда яснее будет. А за подсказку спасибо!

Отредактировано Makarius (Сб, 16 Окт 2010 18:21:27)

0

55

Romych, проверил. Работает и с квадратными скобками! Спасибо!

Но если в посте вставлен еще один спойлер - действует закрывающий тег лишь последнего по счету спойлера, а все промежуточное начисто игнорируется... в общем, получается ерунда.
Но выход простой - ввести на форуме правило: в одном посте - применять лишь один спойлер, и точка.
Конечно, если бы это соблюдалось как-то автоматически, тогда было бы вообще идеально...

0

56

Makarius написал(а):

проверил. Работает и с квадратными скобками!

Но вот обнаружился еще глюк. Спойлер спотыкается вот на этой строке (имеется в виду вариант спойлера с разрешенными квадратными скобками):

(прочие подробности и рисунки см здесь:  http://www.ntpo.com/patents_electricity … y_29.shtml

Romych, есть ли этому объяснение? И можно ли исправить?
.........................
А еще не любит спойлер, когда сообщение кончается слешом (т.е. в конце Веб-ссылка)

Отредактировано Makarius (Сб, 16 Окт 2010 18:22:47)

0

57

Makarius написал(а):

Спойлер спотыкается вот на этой строке

так и не понял на какой именно строке

0

58

Romych написал(а):

так и не понял на какой именно строке

Romych, вот эта вредоносная строка:
===================================================

прочие подробности и рисунки см здесь:  http://www.ntpo.com/patents_electricity … y_29.shtml

===================================================
Вычленяя длинный текст по кускам, вышел вот на эту строку. Если её и в отдельности выделить и нажать кнопку спойлера (усовершенствованного, признающего квадратные скобки, как Вы показали выше), а потом "отправить" - спойлер не срабатывает, да еще портит текст.

Отредактировано Makarius (Вт, 19 Окт 2010 09:01:45)

0

59

Romych, новая незадача! Сразу два форумчанина жалуются, что на IE 8 не работает! Прислали скриншоты - текст остается как есть, лишь с прибавкой тегов спойлера. Да, и значок у них то виден, то не виден!!!
Но работает нормально на Опере и Мозиле
.................................
Вот сам вошел на IE - точно, даже значка спойлера нет...
........................................
Еще сообщение форумчанина с Оперой: значок спойлера есть, но текст не скрывается, лишь вставляются теги. Opera 9.25, система - Win98+98Lite.
.......................................
Еще сообщение: работало в IE, а потом, мол, что-то изменили - и спойлер работать перестал. А в Мозиле работает по-прежнему нормально. А я в это время ввел лишь одно изменение: чтобы квадратные скобки признавались!
Надеюсь, все эти сообщения помогут Вам довести спойлер до совершенства?

Отредактировано Makarius (Вт, 19 Окт 2010 13:57:40)

0

60

Makarius написал(а):

Сразу два форумчанина жалуются, что на IE 8 не работает! Прислали скриншоты - текст остается как есть, лишь с прибавкой тегов спойлера. Да, и значок у них то виден, то не виден!!!
Но работает нормально на Опере и Мозиле

ох уж этот ИЕ, потестирую ещё, посмотрю что можно сделать, хотя если честно пока вариантов в голове нет

0


Вы здесь » Единый форум поддержки » Архив » Обновленный спойлер