Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Не работает функция (https://javascript.ru/forum/css-html/63718-ne-rabotaet-funkciya.html)

eddin 25.06.2016 11:40

Не работает функция
 
Добрый день. Есть такой код:
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>-</title>
 </head>
 <body>
<script type="text/javascript">
function addLink() {
    var selection = window.getSelection(),
        pagelink = ' - без меня не работает',
        copytext = selection + pagelink,
        newdiv = document.createElement('div'),
		a ={"Ё":"YO","Й":"I","Ц":"TS","У":"U"};
		
		alert(copytext);
		
		function translite(trans_str) {
		  return trans_str.split('').map(function(char){
			return a[char]||char;
		  }).join("");
		}

	alert(translite(copytext));
		
    newdiv.style.position = 'absolute';
    newdiv.style.left = '-99999px';

    document.body.appendChild(newdiv);
    newdiv.innerHTML = copytext;
    selection.selectAllChildren(newdiv);

    window.setTimeout(function () {
        document.body.removeChild(newdiv);
    }, 100);
}

document.addEventListener('copy', addLink);

</script>
 <p>
   ЁЁЁЙЙЙЦЦЦУУУ
 </p>
 </body>
</html>


Почему, если я удаляю строку:
pagelink = ' - без меня не работает',

а строку
copytext = selection + pagelink,

изменяю в
copytext = selection,

то второй alert перестает работать?
Заранее спасибо!

Botik21 25.06.2016 12:00

Отладчик бы взял и посмотрел.
А не работает потому, что window.getSelection() возвращает не строку, а объект Selection и у него нет метода split() который ты пытаешься вызвать на строке 19.
А работало потому, что когда происходило соединение со строкой (selection + pagelink), объект преобразовывался в строку методом _toString().

eddin 25.06.2016 12:25

Понятно. Спасибо!


Часовой пояс GMT +3, время: 17:47.