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

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

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


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


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

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

1

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

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

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

Каталог скриптов/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]