Участник:Sergey kudryavtsev/linkificator.js
Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.
- Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
- Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
- Internet Explorer / Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
- Opera: Нажмите Ctrl+F5.
function isAlpha (s_char)
{
var n_code = s_char.charCodeAt(0);
return (n_code >= 0x0041 && n_code <= 0x005A) || (n_code >= 0x0061 && n_code <= 0x007A) || (n_code >= 0x00C0 && n_code <= 0x00FF) ||
(n_code >= 0x0410 && n_code <= 0x044F) || (n_code == 0x0451) || (n_code == 0x0401);
}
function linkificate (s_src)
{
var s_dest = "";
var n_state = 0;
var n_len = s_src.length;
var n_pos = 0;
while (n_pos < n_len) {
var s_char = s_src.charAt(n_pos);
if (isAlpha(s_char)) {
if (n_state == 0) {
s_dest = s_dest + "[[" + s_char;
n_state = 1;
} else {
s_dest = s_dest + s_char;
}
} else {
if (n_state == 1) {
s_dest = s_dest + "]]" + s_char;
n_state = 0;
} else {
s_dest = s_dest + s_char;
}
}
n_pos++;
}
if (n_state == 1) {
s_dest = s_dest + "]]";
n_state = 0;
}
return s_dest;
}
function linkify() {
var wpTextbox1 = document.editform.wpTextbox1;
wpTextbox1.focus();
if (typeof wpTextbox1.selectionStart != 'undefined') { // Mozilla / Opera / Safari3
var n_start_pos = wpTextbox1.selectionStart;
var n_end_pos = wpTextbox1.selectionEnd;
var s_value = wpTextbox1.value;
var s_str = linkificate(s_value.substring(n_start_pos, n_end_pos));
wpTextbox1.value = s_value.substring(0, n_start_pos) + s_str + s_value.substring(n_end_pos)
} else if (document.selection && document.selection.createRange) { // IE
var range = document.selection.createRange();
range.text = linkificate(range.text);
}
}