// Copyright 2006 David Wilkinson. All Rights Reserved.
// ==UserScript==
// @name Escape HTML Entities in TextAreas
// @namespace http://www.dopiaza.org/tools/greasemonkey/escapeentities/
// @description Escape HTML Entities in TextAreas
// @include *
// ==/UserScript==
function updateTextAreas()
{
// Find textareas
var textareas = document.evaluate(
"//textarea",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
for (var i = 0; i < textareas.snapshotLength; i++)
{
addHandlerLink(textareas.snapshotItem(i));
}
}
function addHandlerLink(textarea)
{
var icon = "data:image/png,�PNG
IHDR��agAMA��7��tEXtSoftwareAdobe ImageReadyq�e<BIDAT8˥�M��q��{߹w�� �"� ��LH��|m,4Bd�,,��%;�Y�)Y I�X����R�3fL���}���?�s,f��bj�ͳ9�9��'13���ib�������AT Aq"���\
o�A)
!�^��O�!j�8�� FP%#���E��bhB`�!De�I�q�X/������ڑQ�e�5c��N\��^���u�8����M56�제%X?��r±�s��H�E��N� J%KpA����z��$�+�������e��)K�Tț�"(�Y(����kdiB�3��"�н��A�7#
q!��HZ/��+��Ei4�f$���k�w����V��k�H�v�}��:O���4}fLN��$�.�j��s���s6>Ne�*�wO������ �r��]3�o�'���8��]�9y���/��f�d$[̓'���ƅ�G:[K���*�HB���F5�u�R�u��^��<~������`�S�s�bQ�Z��x���p�
`|��HR#�J�z�.�;��-�I�����bh��d�q~ճ�l>:p��űd�7w<�˿�Kv?Q�9�IEND�B`�";
var span = document.createElement('span');
var a = document.createElement('a');
var img = document.createElement('img');
img.setAttribute("src", icon);
img.setAttribute("border", "0");
img.setAttribute("alt", "Ersetze <, > und kbd-Tags");
img.setAttribute("title", "Ersetze <, > und kbd-Tags");
img.style.marginLeft = "3px";
a.setAttribute("href", window.location.href+"#");
a.setAttribute("title", "Ersetze <, > und kbd-Tags");
a.appendChild(img);
a.addEventListener("click", function(evt)
{
escapeEntities(textarea);
}, false);
span.appendChild(a);
if (textarea.nextSibling == null)
{
textarea.parentNode.appendChild(span);
}
else
{
textarea.parentNode.insertBefore(span, textarea.nextSibling);
}
}
function escapeEntities(textarea)
{
var start = textarea.selectionStart;
var end = textarea.selectionEnd;
var val = textarea.value;
var len = val.length;
var pos = textarea.scrollTop;
var selectionMade = true;
if (start == end)
{
start = 0;
end = len;
selectionMade = false;
}
var s = val.slice(start, end);
s = s.replace(/</g, "<");
s = s.replace(/>/g, ">");
//s = s.replace(/&/g, "&");
//s = s.replace(/"/g, """);
s = s.replace(/\[KBD\]/gi, "[CODE]");
s = s.replace(/\[\/KBD\]/gi, "[/CODE]");
var pre = val.slice(0, start);
var post = val.slice(end, len);
textarea.value = pre + s + post;
if (selectionMade)
{
textarea.selectionStart = start;
textarea.selectionEnd = start + s.length;
}
textarea.scrollTop = pos;
}
window.addEventListener("load",
function ()
{
updateTextAreas();
}, false
);