Greasemonkey Script für individuelle Smileys möglich?

Fhynn

Wird jetzt vernünftig.
Registriert
13 Juli 2013
Beiträge
10.163
Moin,

bin was JavaScript angeht nicht bewandert. Habe so 2-3 Smileys (z.B.
wandsmileyp6dl2.gif
) die ich gerne nutze... und würde das natürlich am liebsten mit :wand: o.Ä. machen. Gibt's da eine Möglichkeit das mir ein Greasemonkey Script das :wand: wenn es ausgeschrieben ist automatisiert mit [img ]http://abload.de/img/wandsmileyp6dl2.gif[/ img] (ohne Leerzeichen) ersetzt?

lg,
 
[src=javascript]var emoji = {
':wand:': 'http://abload.de/img/wandsmileyp6dl2.gif',
':fhynn:': 'http://www.allrad-lkw-gemeinschaft.de/phpBB3/images/smilies/smiley-angry.png'
};

var $ = $ || unsafeWindow.jQuery;

$('.cke_source').on('keyup change paste', function(){
var v = $(this).val();
for(var bb in emoji){
if(v.indexOf(bb) !== -1){
v = v.replace(bb, '' + emoji[bb] + ' ');
$(this).val(v);
break;
}
}
});[/src]

So kannst Du es machen, allerdings geht beim Ersetzen die Cursor-Position verloren. Wenn Du normal Beiträge schreibst, ist das kein Problem, wenn Du zwischendurch jedoch den Cursor in die Mitte setzt und dort ein Emoji einsetzt, dann wird es korrekt ersetzt, jedoch ist der Cursor danach am Ende vom Text. Das auch noch zu berücksichtigen ist ein gutes Stück aufwendiger, wäre aber machbar.

Liebe Grüße.
 
Zuletzt bearbeitet:
  • Thread Starter Thread Starter
  • #3
:wand: ich glaube dein Script mag mich nicht :D
 
Zuletzt bearbeitet:
Mein Fehler: Der Editor existierte Anfangs nicht, als der Event-Listener gestartet wurde.

So sollte es aber nun gehen:

[src=javascript]// ==UserScript==
// @name Emoji
// @namespace ngb
// @description ngb
// @include https://ngb.to/*
// @version 1
// @grant none
// ==/UserScript==

var emoji = {
':wand:': 'http://abload.de/img/wandsmileyp6dl2.gif',
':fhynn:': 'http://www.allrad-lkw-gemeinschaft.de/phpBB3/images/smilies/smiley-angry.png'
};

var $ = unsafeWindow.jQuery;

$(document).on('keyup change paste', '.cke_source', function(){
var v = $(this).val();
for(var bb in emoji){
if(v.indexOf(bb) !== -1){
v = v.replace(bb, '[img ]' + emoji[bb] + '[/img]');
$(this).val(v);
break;
}
}
});[/src]
 
  • Thread Starter Thread Starter
  • #5
wandsmileyp6dl2.gif


Klappt! Dankeschön :D
 
Könnte man die Sache nicht an den Absenden-Buttons binden? Dann ist auch die Cursor-Position nicht wichtig.
 
  • Thread Starter Thread Starter
  • #7
Code:
Expand Collapse Copy
// ==UserScript==
// @name        Emoji
// @namespace   ngb
// @description ngb
// @include     https://ngb.to/*
// @version     1
// @grant       none
// ==/UserScript==
var emoji = {
  ':wand:': 'http://abload.de/img/wandsmileyp6dl2.gif',
  ':mrgeen:': 'http://abload.de/img/icon_mr_greenl3u0s.gif',
  ':ugly:': 'http://abload.de/img/ugly1auqo.gif',
  ':angel:': 'http://abload.de/img/angelkpugw.png',
  ':devil:': 'http://abload.de/img/devilxsuzh.png',
  ':sick:': 'http://abload.de/img/sickjiubn.png',
  ':wub:': 'http://abload.de/img/wubcqs1w.png'
};
var $ = unsafeWindow.jQuery;
$(document).on('keyup change paste', '.cke_source', function () {
  var v = $(this).val();
  for (var bb in emoji) {
    if (v.indexOf(bb) !== - 1) {
      v = v.replace(bb, '[img]' + emoji[bb] + '[/img]');
      $(this).val(v);
      break;
    }
  }
});

Mal mein's, in epis ist ein Leerzeichen drin was sich nicht gehört :p

Einfach als bla.user.js irgendwo speichern, in Firefox reinziehen und win
wubcqs1w.png
danke epi
 
Zuletzt bearbeitet:
Zurück
Oben