Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 20 из 30

Тема: Избавляемся от смайлов в чате.

  1. #1
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483

    Избавляемся от смайлов в чате.

    Короче, смотрел я смотрел, на мольбы многих по запрету смайлов в чате.
    И решил вам помочь.

    Метод основан на замене оригинального кода отвечающего за вставку сообщений в чат.
    Да бы все было по честному привожу оригинальный метод:
    function readChat(){
    $.get("http://"+loc+"/chat/memfs/chat.txt?t="+(new Date).getTime(),function(data){
    if(data.length!=0){
    $("#chat").html(data);
    var kont= new Array;
    kont = $("#chat");
    /*if ($.isArray(kont) === '[object Array]') {kont=kont[0];}
    if (kont != undefined){
    kont[0].scrollTop=kont[0].scrollHeight;
    }*/
    if ((kont.length != 0)&&(scrolllbar==0)) {
    kont[0].scrollTop = kont[0].scrollHeight;
    }
    }
    });
    }
    А вот предлагаемый мною метод:
    function readChat(){
    $.get("http://"+loc+"/chat/memfs/chat.txt?t="+(new Date).getTime(),function(data){
    if(data.length!=0){
    $("#chat").html(data.replace(/<img src=\"http:\/\/sc2tv\.ru\/chat\/(.*?)>/g, ''));
    var kont= new Array;
    kont = $("#chat");
    /*if ($.isArray(kont) === '[object Array]') {kont=kont[0];}
    if (kont != undefined){
    kont[0].scrollTop=kont[0].scrollHeight;
    }*/
    if ((kont.length != 0)&&(scrolllbar==0)) {
    kont[0].scrollTop = kont[0].scrollHeight;
    }
    }
    });
    };
    Как видите отличие в том что в моем методе перед вставкой данных чата на страницу, регэкспом выпиливается все теги со смайлами.

    Как этим пользоваться?
    Заходим на sc2tv.ru
    в адресной строке вставляем:
    javascript:function readChat(){
    $.get("http://"+loc+"/chat/memfs/chat.txt?t="+(new Date).getTime(),function(data){
    if(data.length!=0){
    $("#chat").html(data.replace(/<img src=\"http:\/\/sc2tv\.ru\/chat\/(.*?)>/g, ''));
    var kont= new Array;
    kont = $("#chat");
    /*if ($.isArray(kont) === '[object Array]') {kont=kont[0];}
    if (kont != undefined){
    kont[0].scrollTop=kont[0].scrollHeight;
    }*/
    if ((kont.length != 0)&&(scrolllbar==0)) {
    kont[0].scrollTop = kont[0].scrollHeight;
    }
    }
    });
    };
    Конечно этот костыль не будет работать при переходе по страницам сайта, но это показывает что при желании сделать что бы пользователи выбирали чат со смайлами или без, очень просто.

  2. #2
    Освоившийся Аватар для Pesto
    Регистрация
    17.05.2010
    Адрес
    живу под мостом
    Сообщений
    125
    а есть такой же код, только с перламутровыми пуговицами?
    Последний раз редактировалось Pesto; 30.12.2010 в 17:28. Причина: падение доллара

  3. #3
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    Цитата Сообщение от Pesto Посмотреть сообщение
    а есть такой же код, только с перламутровыми пуговицами?
    Что значит есть? Написать что ли?

  4. #4
    Активный участник Аватар для Braga
    Регистрация
    17.05.2010
    Сообщений
    2,319
    Цитата Сообщение от Pesto Посмотреть сообщение
    а есть такой же код, только с перламутровыми пуговицами?
    Хех ну ты приколист ) А по теме так автор молодец решил проблему большинства. Для перелистывания страниц сайта просто на просто можно открыть новую страницу с сайтом ск2тв.:

  5. #5
    Освоившийся Аватар для corseg
    Регистрация
    17.05.2010
    Сообщений
    203

    Thumbs up

    Автор молодец, труд уважаю.
    И всё-таки это напильник, который хоть немного, но будет грузить страницу.
    И если уж убирать смайлики в чате, то заблаговременно их не подгружая. Безусловно, последнее предложение мы, пользюки, никак реализовать не сможем, а вот ребята, что кодят чат, вполне могли бы запилить выключение визуализации смайла "по галочке" (т.е. просто не подгружать картинку)
    Это было бы риальне круто имхо.

  6. #6
    Освоившийся Аватар для corseg
    Регистрация
    17.05.2010
    Сообщений
    203
    *Я подумал - наверняка я пропустил некий виток жизни на ск2тв, и побывал в роли КЭПА в предыдущем посте.
    Последний раз редактировалось corseg; 30.12.2010 в 17:43.

  7. #7
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    Цитата Сообщение от corseg Посмотреть сообщение
    Автор молодец, труд уважаю.
    И всё-таки это напильник, который хоть немного, но будет грузить страницу.
    И если уж убирать смайлики в чате, то заблаговременно их не подгружая. Безусловно, последнее предложение мы, пользюки, никак реализовать не сможем, а вот ребята, что кодят чат, вполне могли бы запилить выключение визуализации смайла "по галочке" (т.е. просто не подгружать картинку)
    Это было бы риальне круто имхо.
    Такой способ реализации в разы геморней, чем обрабатывать приходящую строку на клиенте. на производительности это не скажется тк регэкспы работают быстро а картинку и вовсе грузиться не будут.
    А положении галочки "Включить смайлы/Выключить смайлы" можно и в куках на клиенте хранить.
    Реализация займет минут 10.

  8. #8
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    Цитата Сообщение от Pesto Посмотреть сообщение
    а есть такой же код, только с перламутровыми пуговицами?
    есть!
    Как работает: http://www.youtube.com/watch?v=b90H7uH0ry0

    Скопировать и вставить в адресную строку
    javascript:(function () {
    window.readChat = function () {
    $.get("http://"+loc+"/chat/memfs/chat.txt?t="+(new Date).getTime(),function(data){
    if(data.length!=0) {
    rz.add(data);
    $("#chat").html(data);
    var kont= new Array;
    kont = $("#chat");
    /*if ($.isArray(kont) === '[object Array]') {kont=kont[0];}
    if (kont != undefined){
    kont[0].scrollTop=kont[0].scrollHeight;
    }*/
    if ((kont.length != 0)&&(scrolllbar==0)) {
    kont[0].scrollTop = kont[0].scrollHeight;
    }
    }
    });
    };

    rz = {};

    rz.smiles = new Array();

    rz.add = function (data) {
    var a = data.match(/<img src=\"http:\/\/sc2tv\.ru\/chat\/(.*?)>/g);
    for (var i = 0; i < a.length; i++) {
    rz.create(a[i]);
    };
    };

    rz.find = function (e) {
    for (var m in rz.smiles) {
    if (rz.smiles[m].img === e) {
    return true;
    };
    };
    return false;
    };

    rz.create = function (img) {
    if (!rz.find(img)) {
    rz.smiles.push(new rz.Smile(img));
    };
    };

    function Smile (img) {
    this.x = Math.floor(Math.random() * ((window.innerWidth)?window.innerWidth:((document. all)?document.body.offsetWidth:null)));
    this.y = Math.floor(Math.random() * ((window.innerHeight)?window.innerHeight:((documen t.all)?document.body.offsetHeight:null)));
    this.dx = Math.floor(Math.sin(this.y / 10) * 10);
    this.el = document.createElement('div');
    document.getElementsByClassName('main-frame')[0].appendChild(this.el);
    this.el.style.position = 'absolute';
    this.el.style.zIndex = '10000';
    this.el.style.top = this.y + 'px';
    this.el.style.left = (this.x + this.dx) + 'px';
    this.el.style.display = 'block';
    this.img = img;
    this.el.innerHTML = this.img;
    };

    Smile.prototype.move = function () {
    this.y += 1;
    if (this.y >= (window.innerHeight)?window.innerHeight:((document .all)?document.body.offsetHeight:null)) {
    this.y = 1;
    this.x = Math.floor(Math.random() * ((window.innerWidth)?window.innerWidth:((document. all)?document.body.offsetWidth:null)));
    };

    this.dx = Math.floor(Math.sin(this.y / 10) * 10);
    this.el.style.top = this.y + 'px';
    this.el.style.left = (this.x + this.dx) + 'px';
    };

    function smileMove() {
    for (var m in rz.smiles) {
    rz.smiles[m].move();
    };
    setTimeout(smileMove, 33);
    };

    smileMove();

    rz.Smile = Smile;
    window.rz = rz;
    })();
    Последний раз редактировалось zxcabs; 30.12.2010 в 21:42.

  9. #9
    Освоившийся
    Регистрация
    26.09.2010
    Сообщений
    156
    Эээ... а не легче ли это в Greasemonkey запихнуть? И его аналоги для других браузеров.

  10. #10
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    Легче.
    Но это универсальный метод для всех браузеров. Кроме ИЕ туда не влазит скрипт.

  11. #11
    Освоившийся Аватар для Tuxuu
    Регистрация
    17.05.2010
    Сообщений
    154
    Народ, вы чего? Не проще ли поставить adblock на браузер, раз за все время прокликать по каждому смайлу и внести его в фильтр? ВСЕ!

  12. #12
    Освоившийся
    Регистрация
    26.09.2010
    Сообщений
    156
    zxcabs, так в опере же тоже есть такое, если мне не изменяет память. Про хром не знаю, правда.

  13. #13
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    Цитата Сообщение от nappy Посмотреть сообщение
    zxcabs, так в опере же тоже есть такое, если мне не изменяет память. Про хром не знаю, правда.
    Такое есть в большинстве браузеров есть. Называется консоль javascript. Просто вызываются они по разному и что бы не писать инструкцию ка достучаться до консоли в каждом браузере я показал самый простой метод.

  14. #14
    Новобранец Аватар для Asche
    Регистрация
    15.10.2010
    Сообщений
    38
    Цитата Сообщение от zxcabs Посмотреть сообщение
    Блин вот я упал тролbфейс c каваем по страничке плывут... ^^

  15. #15
    Активный участник Аватар для Mr. Abar
    Регистрация
    21.05.2010
    Адрес
    Берлин
    Сообщений
    9,600
    Это ппц.
    Мальчик читал на Арбате нетленку
    Мент прострелил пацаненку коленку
    Корчился мальчик садистов кляня
    Громко смеялась в сторонке гэбня

  16. #16
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    С утра проснулся, и решил вернуться к теме.
    Дабы максимально облегчить задачу, и еще раз показать что решение имеет тривиальный способ.
    Вот так это выглядит: http://www.youtube.com/watch?v=AdqgMVFFvUI

    Файл с кодом прилагаю.
    Вложения Вложения

  17. #17
    Активный участник Аватар для Plyushevo
    Регистрация
    17.05.2010
    Сообщений
    360
    Уважаемые знатоки, внимание вопрос: "А зачем убирать смайлы?"

  18. #18
    Активный участник
    Регистрация
    16.09.2010
    Сообщений
    483
    Цитата Сообщение от Plyushevo Посмотреть сообщение
    Уважаемые знатоки, внимание вопрос: "А зачем убирать смайлы?"
    Некоторым накипело http://forum.sc2tv.ru/showthread.php...D0%BE!!#261053

  19. #19
    Активный участник Аватар для plart
    Регистрация
    17.05.2010
    Адрес
    Украина
    Сообщений
    1,201
    пока воспользовался временной мерой предложенной в этой теме. Но, еще раз подчеркну, временной. Почему? Да потому что для избавления от смайлов нужно совершать лишнее телодвижение, причем снова и снова после загрузки браузера (обновления страницы). Как минимум, чего я добиваюсь в своей теме - это добавления соответствующей кнопки в чате, как максимум - убирания смайлов как таковых.

  20. #20
    Активный участник Аватар для plart
    Регистрация
    17.05.2010
    Адрес
    Украина
    Сообщений
    1,201
    Цитата Сообщение от zxcabs Посмотреть сообщение
    С утра проснулся, и решил вернуться к теме.
    Дабы максимально облегчить задачу, и еще раз показать что решение имеет тривиальный способ.
    Вот так это выглядит: http://www.youtube.com/watch?v=AdqgMVFFvUI

    Файл с кодом прилагаю.
    Кстати, лично у меня данный код в опере не работает - просто ничего не происходит. Во избежание первого вопроса - да, я дописываю вначале "javascript:" без кавычек))

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •