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

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

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


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


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

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

21

Многие скрипты, использующиеся на сервисе, работают с 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

22

Иногда при работе с пользовательским выделением(к примеру при цитировании) бывает нужно получить не только текст выделения, но и его 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

23

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

0

24

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

+1

25

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

0

26

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

+1


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