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

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

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


Вы здесь » Единый форум поддержки » Архив » Запросы по скриптам[5]


Запросы по скриптам[5]

Сообщений 201 страница 220 из 1002

1

Архивная тема с запросами о создании различных скриптов

Это архивная тема с запросами от пользователей на написание скриптов. Некоторые скрипты могут быть индивидуальным исполнением для конкретного форума, что не гарантирует его работоспособность на другом форуме. Перед использованием скрипта, пожалуйста, внимательно изучите все предыдущие сообщения между автором запроса и исполнителем, в них могут содержаться важные детали о функционале и установке найденного скрипта.
Скрипты, опубликованные в этой теме, могут быть устаревшими и нерабочими, поскольку функционал форумов и стандарты языка javascript или библиотеки jquery могли измениться.

Предыдущая тема - Запросы по скриптам[4]
Следующая тема - Запросы по скриптам[6]

Инструменты для поиска и редактирования стиля (скриптов).

Как с помощью браузера можно определить элемент дизайна.

Каталог скриптов/CSS

Полезные скрипты, необходимые темы для новичков, а также ссылки на сайты рассказывающие что такое НТМЛ и CSS.

Типовые Вопросы (ЧаВо)

Ответы на часто задаваемые вопросы.

Как задавать вопросы! Разница между стилем и скриптом. ( Советы)

Плюс к названию темы еще и Памятка.

+1

201

Deff
Спасибо, об этой возможности я знаю. Интересует именно возможность вывести всю тему одной страницей – в крайнем случае, возможность добавить ссылку, позволяющую вывести большее количество сообщений на одной странице. Как добавочную именно – чтобы нормально человек мог видеть, скажем, 20 сообщений на странице, но при желании мог бы увидеть всю тему (или на крайняк, первые сто сообщений в ней),  не перенастраивая свой профиль.

Отредактировано Зевако (Пт, 27 Ноя 2015 12:06:16)

0

202

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

Я бы заменил этот кусок

На одну строку:

Потом:
Почему ты не стал считывать линк из response ? (cм пост 148)
=============================
Там жа и запросов меньше, если отсутствует переадресация в В Администрирование - Настройки
=========================================================================
В скрипте Добавке на отключение чекитом - стоит обернуть весь код в анонимную функцию, ибо скриптов с куками - полно, ну испортят работоспособность
Ну и вообще, - срать переменными в Глобаль - не дело(скриптёров полно, вдруг у кого то та же самая ?

1. Спасибо, попробую
2.

        var resText = response;

        if($(response).find('#pun-viewtopic').length==0) {
          resText = $.ajax({url: lnkGet+'&action=last', async: false, cache: false}).responseText;   //alert(resText);
        }

Ссылку я беру из document.URL, добавляю &action=last
Из response попробую выпарсить только хеш

if($(response).find('#pun-viewtopic').length==0){
  var nHash = '#p'+$(response).find('.backlink>a')[0].href.split('#p')[1]
}else {
  nHash = '#'+$(response).find('.endpost').attr('id')
}

3. Обернем, не проблема

0

203

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

Ссылку я беру из document.URL, добавляю &action=lastИз response попробую выпарсить только хеш

А чем плохо ссылку выпарсить из backlink>a ? Тем паче это она и есть!
Блин и нафига делать лишний аякс, если нет переадресации ?
В response уже точно тоже, что и в твоём Аякс!
Страница никого не волнует! Главное Тема и Хеш

0

204

Зевако написал(а):

о при желании мог бы увидеть всю тему (или на крайняк, первые сто сообщений в ней),  не перенастраивая свой профиль.

Ну это уже ближе к возможности реализации скриптом, но пока сложно, ждём API от сервиса (Ибо это нун вынести настройку числа сообщений на текущую страницу

0

205

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

Блин и нафига делать лишний аякс, если нет переадресации ?
В response уже точно тоже, что и в твоём Аякс!

Дефф! Я же поправил вчера по твоему совету

//== Функция отправки формы ==//
function ajaxSendForm(form){
  $.ajax({
    url: form.attr('action'),
    dataType: 'html',
    type: 'POST',
    data: form.serialize(),
    success: function(response) {

      var pstErrs = $(response).find('#post-errors');
        if(pstErrs.html()!=null){
          var errTxt = pstErrs.text().replace(/ /g,'');
          alert(errTxt);
          $('.formsubmit .button').removeAttr('disabled');
          return false
        }

      var lnkGet = document.URL.split('&p')[0]; //Ссылка на тему
   
      if(lnkGet.indexOf('#')!=-1) { lnkGet = lnkGet.split('#')[0];}

      var resText = response;

      if($(response).find('#pun-viewtopic').length==0) {  //Проверяем,  - если страница переадресации - делаем аякс запрос в тему
          resText = $.ajax({url: lnkGet+'&action=last', async: false, cache: false}).responseText;   //alert(resText);
        }

      document.open(); document.write(resText); document.close();

      var newLnk = $('.endpost:last').find('.permalink').attr('href');
        history.replaceState(null,null,newLnk);

      var offsPost = $('.endpost:last').offset().top; //alert(offsPost);
        $('html,body').scrollTop(offsPost);

      var newHash = $('.endpost:last').attr('id');
        window.location.hash = '#' + newHash;

  },
    error: function(){
       alert('Не удается соединиться с сервером. ');
       $('.formsubmit .button').removeAttr('disabled');
    }
  });
}

+1

206

Alex_63
Cтранно, мну один раз ткнул ссылку скрипта - увидел примерно что и вчера, наверно закешировалось (чичас  ткнул - увидел обновлённый)
Тады - соррь
Ксать а почему весь код не обернуть этой штукой ?

if($('#pun-viewtopic').length && $('#post').length && !($('head>link[rel="next"]').length))(function() {

А не только часть с отправкой ?

0

207

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

Ксать а почему весь код не обернуть этой штукой ?

Да, надо бы

===============================================

Чот заколебался я с этой мозиллой
В ней хешь не меняецо даже по $(window).load(function() {}); => http://hostjs.mybb.ru/viewtopic.php?id=2&p=11#p315

0

208

Alex_63
Снеси - Переустанови Мозилку, у мну всё меняется
(у мну бывали такие залипы по иным скриптам, типа JSON.parse - не работает)

0

209

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

Ксать а почему весь код не обернуть этой штукой ?

Сериалайзер тоже в (function() {}()) засунуть?

==================================================

У тьву и на HostJS работает прокрутка?

==================================================

Такое ощущение, что Мозилла не понимает

if($.browser.mozilla) {
  $(window).load(function() {
            var nHash = $('.endpost:last').attr('id');alert(nHash)
            window.location.hash = '#'+nHash;
            return
  });
}

А для всех браузеров не хотелось бы...

0

210

Alex_63
Alex_63
Да, не меняется в Мозилле
=====================
Попробуй переустановить хеш

if($.browser.mozilla) {
            var nHash = $('.endpost:last').attr('id');alert(nHash)
            window.location.hash = '#'+nHash;
            return
}

перед
        document.open(); document.write(resText); document.close();
(Думаю связано со сменой Документа)
Выпарсить Хеш можно из $(resText);
=================================
А if($.browser.mozilla) { alert('Мозилла') }  - Работает ?

0

211

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

А if($.browser.mozilla) { alert('Мозилла') }  - Работает ?

Сработало))

Мне главное - прокрутить страницу до последнего поста, (а может даже $('html,body').scrollTop($('body').height())

0

212

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

а может даже $('html,body').scrollTop($('body').height())

Это логично, вдруг кто то еще пост отправил, типично два поста будет видно и твой и чужой

0

213

Deff
Получилось!! (Сейчас обновлю скрипт)

0

214

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

Какой браузер? Не IE11 случаем?
Дайте Админский Ник - Пароль от тестового форума, - посмотрю, попробую поправить

Нет, ни разу не IE, обычный Хром. Всё для админского входа сейчас отдам в ЛС

0

215

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

// Подменяем кнопку
  $('#post .formsubmit input:first').hide().before('<input type="submit" class="button" id="ajaxSend" value="'+$('.formsubmit input:first').attr('value')+'" />')

Суть моих подмен была  в том, что type="submit" заменить на type="button", которые не отправляют форму, в отличие от type="submit" - которые всегда отправляют,
(Не пользовался тогда ещё  этой фенечкой    e.preventDefault();
Т.е. сейчас смысла в такой подмене нет!, можно не заменяя кнопку, тестировать событие на ней

====================
Потом, - воткнув обработку события в отдельную функцию:

<script type="text/javascript">
function clickMy (e){
       e.preventDefault();
alert(1); //Тест
}
var submit = $('#post .formsubmit input[name="submit"]');
submit.click(clickMy);

/* Легко отключаем функцию */
//  submit.unbind("click",clickMy);
</script>

Т.е четырьмя строками мон добавить то отключение внутрь скрипта быстрой отправки(что ты сделал сейчас большим отдельным скриптом)
========================
Если ты хеш правишь повторно, указывать, что ток для Мозиллы - смысла нет

          if($.browser.mozilla) {//alert('Mozilla!');
              var nHash = '#p'+$(response).find('.backlink>a')[0].href.split('#p')[1];
              window.location.hash = nHash;
          }

И, правильне(вместо Выше и в том же месте), -  так:

var newLnk = $(resText).find('.endpost:last>h3 .permalink')[0].href;
var newHash = window.location.hash = '#' + newLnk.split('#')[1];

Ибо в твоей версии, если форум без переадресации - скрипт вылетит по ошибке (null.[0].href.split('#p')[1]; );
======================
Cкролл лучше ставить в самом конце, после повторной установки хеша

Отредактировано Deff (Сб, 28 Ноя 2015 00:34:28)

+1

216

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

Ибо в твоей версии, если форум без переадресации - скрипт вылетит по ошибке

Только в Мозилке.. в остальных получаем хэш из .post .permalink
Поправлю...

/* Легко отключаем функцию */
//  submit.unbind("click",clickMy);

А как ее обратно включить?.. (Или если галка есть, submit.click(clickMy) , если нет - submit.unbind('click') ?

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

Cкролл лучше ставить в самом конце,

Я тестил во всех основных браузерах, и сейчас все в норме

0

217

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

А как ее обратно включить?.. (Или если галка есть, submit.click(clickMy) , если нет - submit.unbind('click') ?

submit.click(clickMy);

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

Я тестил во всех основных браузерах, и сейчас все в норме

Ну во многих браузерах двигается само и по кешу, без вызова jQuery
jQuery.scroll - сначало анализирует разницу текущего смещения, потом вызывает функцию, а нафег вызывать, если подвинулось по кешу ?
Я про поставить  скролл в конец функции[function(response)]: Поменять местами вторую установку кеша и скролл
==============================
и сократить репиты определения переменных, к примеру моно так, вместо поиска '.endpost:last' по DOM
var offsPost = $(newHash)).offset().top;

0

218

Mirra Bell
Конфликтует со скриптом "Иконки для Тем и Сообщений"...

Выбирайте - посколь даже если бы сработала отправка, иконки не добавлялись бы при отправке из Темы(наверно лучше оставить иконки)

+1

219

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

var offsPost = $(newHash)).offset().top;

Наверно так:
var offsPost = $('#'+newHash).offset().top;

0

220

Alex_63
Хеш уже с #
================
И потом нафига это =>

var lnkGet = document.URL.split('&p')[0]; //Ссылка на тему
   
          if(lnkGet.indexOf('#')!=-1) { lnkGet = lnkGet.split('#')[0];}

          var resText = response;

          if($(response).find('#pun-viewtopic').length==0) {
            resText = $.ajax({url: lnkGet+'&action=last', async: false, cache: false}).responseText;   //alert(resText);
          }

Кады я уже давал короче ?   

var resText = response;
if($(response).find('#pun-viewtopic').length==0) {
  var linkGet = $(response).find('div.backlink>a')[0].href;
  resText = $.ajax({url: lnkGet, async: false, cache: false}).responseText;   //alert(resText);
}

.backlink - ccылка на пост в окне переадресации
===================
От var resText тож можно в конце отказаться, оставив ток  response

+1


Вы здесь » Единый форум поддержки » Архив » Запросы по скриптам[5]