Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Изменение содержимого при копировании (https://javascript.ru/forum/css-html-browser/17008-izmenenie-soderzhimogo-pri-kopirovanii.html)

wim2405 02.05.2011 17:54

Изменение содержимого при копировании
 
Решил сделать чтобы при копировании материалов с сайта в конец скопированного добавлялась строчка указывающая откуда был взят текст. Нашел приличное число тем на эту тему, но сделать рабочим под Operу так и не получилось.

function addLink()  {     
var body_element = document.getElementsByTagName('body')[0];    
var selection;   
selection = window.getSelection(); 
 var pagelink = "<br /><br /> Источник: xxx Все права защищены &copy 2011"; 
var copytext = selection + pagelink;   
var newdiv = document.createElement('div');     newdiv.style.position='absolute';  
newdiv.style.left='-99999px';   
body_element.appendChild(newdiv);
newdiv.innerHTML = copytext;
selection.selectAllChildren(newdiv);
window.setTimeout(function() {        body_element.removeChild(newdiv);   },0); 
} document.oncopy = addLink;


находил вариант с условием:

if (window.getSelection) {
     txt = window.getSelection().toString();
  } else if (document.getSelection) {
    txt = document.getSelection();                
  } else if (document.selection) {
    txt = document.selection.createRange().text;
  }

который по словам автора работает на всех браузерах, однако у меня он не работал. Opera 11.10

Kolobok123409 13.05.2020 19:11

Xss в коде автора
 
В коде выше есть уязвимость, при копировании экранированного текста аля
<img src onerror="alert()">
исполнится код, пример


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