Перейти к содержимому






Фотография

Смайлики В Контакте

Написано Евгений Малинин , 27 Июнь 2010 · 5 812 Просмотров

Интернет
Смайлики В Контакте? Оказывается, это реально сделать...
Что нам нужно:
1. 3 минуты свободного времени
2. дополнение Greasemonkey
3. Firefox

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

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

Теперь кликаем правой кнопкой мыши по пиктограмме обезьянки и переходим в управление скриптами. Вносим значение
*vkontakte.ru/*
в поле "Охватываемые адреса":
Изображение
На этом всё. Смайлики теперь отображаются:
Изображение

Список смайликов и их текстовых обозначений:
Изображение

Ну и, для любопытствующих (или может кто захочет добавить функционал :)), исходный код скрипта :) :
// ==UserScript==
// @name smileys
// @namespace vkontakte
// @include *
// @version 1.1
//
// smileys for vkontakte.ru (c) oleganza
// http://oleg.sunoni.net/smileys.userjs.html
//
// v 1.1 contains security fixes (HTML escaping)
//
// Based on original mat.user.js (c) killerstorm, lleo
// http://lleo.aha.ru/mat/user.htm


(function() {

if (window.location.hostname.match(/vkontakte/)) {   

var map = [
  ['grin',	   /:D|:\)\)+|=\)\)+/gi],
  ['grin',	   /\)\)\)+/gi],
  ['smiley',	 /:\)+|:-\)+|=\)+|:-\]|:\]|=\]/gi],
  ['wink',	   /;\)+|;-\)+/gi],
  ['tongue2',	/:-[pр]|:[pр]|:-[PР]|:[PР]/gi],
  ['blank',	  /:-\||:\||=\|/gi],
  ['sad',		/:\(+|:-\(+|=\(+|:-\[|:\[|=\[/gi],
  ['nice',	   /<img src='http://forum.kasperskyclub.ru/public/style_emoticons/default/smile.gif' class='bbc_emoticon' alt=':friends:' />/gi],
  ['kiss',	   /[:;]-\*|[:;]\*/gi]
];

// http://spbgu.ru/forums/index.php?act=legends&CODE=emoticons&s=
map = [
  ['biggrin',	/:D|:\)\)+|=\)\)+/gi],
  ['biggrin',	/\)\)\)+/gi],
  ['smile',	  /:\)+|:-\)+|=\)+|:-\]|:\]|=\]/gi],
  ['wink',	   /;\)+|;-\)+/gi],
  ['tongue',	 /:-[pр]|:[pр]|:-[PР]|:[PР]/gi],
  ['mellow',	 /:-\||:\||=\|/gi],
  ['sad',		/:\(+|:-\(+|=\(+|:-\[|:\[|=\[/gi],
  ['blush2',	 /\^_\^/gi],
  ['kiss2',	  /[:;]-\*|[:;]\*/gi]
]

//var substRegex = /([\u0410-\u042f\u0430-\u044f]\s*)([.,?!\)]+)/gi;

function replacer (m, m1, m2) {
  //if (Math.random() > 0.5) {
//  return m1 + pickRandomWord() + m2;
//  } else return m;
} 

function xform(s) { 
  //return s.replace(substRegex, replacer); 
  s = s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")
  for (var i = 0; i < map.length; i++) 
  {
  
	s = s.replace(map[i][1], ' <img ' +
									   'style="margin-bottom:-0.3em;"  ' +
									   'src="http://www.spbgu.ru/forums/html/emoticons/' +
										map[i][0] +'.gif" alt="" />')
										
	/*s = s.replace(map[i][1], '<img ' +
									   'style="margin-bottom:-0.2em;"  ' +
									   'src="http://www.jms101.btinternet.co.uk/' +
									   'full_sets/gold/circular_subtle_std/' + 
										map[i][0] +'.gif" alt="" />')*/
  }
  return s;
} 

function smilize_node(text_node, p) {
  var s = text_node.data;
  
  var parent = p;
  if (!p) parent = text_node.parentNode;
  
  if (s.match(/\.write/)) {
	//alert(s);
	return;
  }
  
  try {
	// we need this 'cos node is text node.
	//var parent = text_node.parentNode;
	var new_node = document.createElement("span");
	var new_content = xform(s);
	if (new_content != s) {
	  new_node.innerHTML = new_content;
	  parent.replaceChild(new_node, text_node);
	}
  }catch(e) {	
	//alert(e);
  }
}

// replace in body text 
if (document.evaluate) { 
  //with XPath support
  var textnodes = document.evaluate( "//body//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 
  for (var i = 0; i < textnodes.snapshotLength; i++) { 
	 node = textnodes.snapshotItem(i); 
	 //node.data = xform(node.data);
	 smilize_node(node, null);
  }
} else {
  // no XPath -- do recursive
  function processNode(node, parent) {
	  // is this a text node?
	  if (node.nodeType == 3) {
		  //node.data = xform(node.data);
		  smilize_node(node, parent);
	  } else  if (node.nodeType == 1) {
		var i;				   
		for (i = 0; i < node.childNodes.length; i++) {
			processNode(node.childNodes[i], node);
		}
	}
  }
  processNode(document.body, document.body);
}

} // if (window.location.hostname.match(...))

})();

Сразу скажу, скрипт не мой :)


  • 0



А для Google Chrome это работает?
    • 0
Фотография
Евгений Малинин
27 июня 2010 15:23
Если там есть этот аддон, то долно работать...
    • 0
Фотография
VladWizardDark
31 июля 2010 20:03
супер :)
    • 0

Апрель 2018

П В С Ч П С В
      1
2345678
9101112131415
16171819202122
23242526 27 2829
30      

пользователей просматривает

0 пользователей, 0 гостей, 0 анонимных

Поиск по блогу

Последние записи

Twitter

Последние посетители

  • Фотография
    santax
    17 марта 2017 - 22:55
  • Фотография
    hhuylo
    30 мая 2016 - 13:59
  • Фотография
    Ig0r
    09 мая 2015 - 16:12
  • Фотография
    ALPHA TESTER
    08 апр. 2015 - 11:03
  • Фотография
    www2.1
    06 дек. 2014 - 11:17

Последние комментарии