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

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

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


Вы здесь » Единый форум поддержки » Форум для новичков » В Помощь скриптодельцам!


В Помощь скриптодельцам!

Сообщений 21 страница 27 из 27

21

Часто бывает нужно работать с элементами, которые вставляются на страницу после ее загрузки (например, подгружаемые аякс запросом через многосложный чужой скрипт),
Этот скрипт облегчает действия с динамически вставляемым контентом:

Отлавливаем динамически вставляемые элементы на странице

<script type="text/javascript">
$.catch = function(a,f){$(function(){var t,i=0;function s(){i++;if(i>120)return;t=setTimeout(function(){if(!$(a).length){s();return};f()},100);}s();});}
</script>


$.catch('селектор', обработчик)
Селектор - jQuery-селектор элемента, появление которого тестируется.
Обработчик - пользовательская функция, вызываемая после появления тестируемого элемента.


//пример: отслеживаем появление блока подфорумов на странице форума, вставляемого скриптом Подфорумы "не скриптом", новая версия

<script type="text/javascript">
$.catch = function(a,f){$(function(){var t,i=0;function s(){i++;if(i>120)return;t=setTimeout(function(){if(!$(a).length){s();return};f()},100);}s();});}

if($('#pun-viewforum').length) $.catch('#f-subforums', function() {
  alert('Подфорумы вставлены! Количество: ' + $('#f-subforums tbody tr').length);
}
);

</script>

+2

22

Многие скрипты, использующиеся на сервисе, работают с HTML, вставляемым пользователем (или модератором),
Часто в использующемся HTML содержатся ошибки, и такой код без обработки при вставке ломает страницу,
Написал небольшой код на основе jQuery, проверяющий и корректирующий ошибки в HTML:

Корректируем HTML с ошибками

function correctHTML(str){
  return $('<div />').html(str.replace(/(<)(\/?)(?:script)([\s\S]*?)(>)/gim,'$1$2jstoken$3$4')).html().replace(/jstoken/gim,'script');
}


Пример использования: (исправляем строку с HTML с ошибками)

<script>
function correctHTML(str){
  return $('<div />').html(str.replace(/(<)(\/?)(?:script)([\s\S]*?)(>)/gim,'$1$2jstoken$3$4')).html().replace(/jstoken/gim,'script');
}


//HTML с ошибками
var str = '<div><div><div>test<script src="/script.js">alert()<'+'/script><plaintext></plaintext></span>';
var str2 = correctHTML(str);
alert(str+'\n\n'+str2);  //выведет исходную строку и ниже - исправленную
</script>

+2

23

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

Получаем HTML пользовательского выделения

window.selectionHTML = function() {
  var e, d = "";
  if (!document.selection) {
    e = window.getSelection();
    if (!e.isCollapsed) {
      e = e.getRangeAt(0);
      var f = document.createElement("div");
      f.appendChild(e.cloneContents());
      d = f.innerHTML
    } else d = ""
  } else d = document.selection.createRange().htmlText
  return d
};

Пример работы:

<script>
window.selectionHTML = function() {
  var e, d = "";
  if (!document.selection) {
    e = window.getSelection();
    if (!e.isCollapsed) {
      e = e.getRangeAt(0);
      var f = document.createElement("div");
      f.appendChild(e.cloneContents());
      d = f.innerHTML
    } else d = ""
  } else d = document.selection.createRange().htmlText
  return d
};


//Выводим пользовательское выделение при попытке копирования мышкой
$(document).on("mouseup",function () {
  var selection = selectionHTML();
  if(selection.length) alert(selection);
});
</script>

+3

24

Здравствуйте! Нужна помощь, я не знаю как сделать так, что-бы поставить 1 фотографию всем пользователям сразу после регистрации их. А потом они уже сами меняли.

0

25

Семён, возможно, вот этот скрипт вам подойдёт.

+1

26

satsana
Спасибо за  скрипт)

0

27

:glasses: Тема не для юзер обсуждений!
Тут только коды от умеющих!!
Для диалогов  есть тема => Запросы по скриптам[9]

+1


Вы здесь » Единый форум поддержки » Форум для новичков » В Помощь скриптодельцам!