@SlimSavernake

Как добавить в скопированный текст ссылку на источник?

Существует следующий скрипт добавления в скопированный текст ссылки на источник:
function addLink() {
                var body_element = document.getElementsByTagName('body')[0];
                var selection = window.getSelection();
                var pagelink = " <a href='"+document.location.href+"'>источник</a> &copy; ";
                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;


Ссылка тут вставляется после текста.

Мне нужно вставить ссылку в текст, в определенное слово. В следующем коде я ищу в скопированном тексте последнее слово "собака" и делаю его ссылкой на источник.

function addLink() {
var body_element = document.getElementsByTagName('body')[0];
var selection;
selection = window.getSelection();
var pos = (''+selection).lastIndexOf("Собака");
var pagelink = "<a href='"+document.location.href+"'>Собака</a>";

String.prototype.replaceAt=function(index, character) {
    return this.substr(0, index) + character + this.substr(index+6);
}
var copytext = (''+selection).replaceAt(pos, pagelink);
//alert(copytext);


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;


Проблема в том, что когда я вставляю этот скопированный текст, то созданный div тоже вставляется, а не удаляется, как в верхнем примере поэтому вставленый текст в редакторе не видно. Помогите решить проблему.

Так вставляется в редактор:
<div style="position: absolute; left: -99999px;">у нас есть большая &lt;a href=&#39;http://localhost/basic9/web/news/politics/2&#39;&gt;Собака&lt;/a&gt;.</div>


А так в обычное поле (по идее для редактора мне нужно тоже самое только в виде гиперссылки):
у нас есть большая <a href='http://localhost/basic9/web/news/politics/2'>Собака</a>.
  • Вопрос задан
  • 1422 просмотра
Решения вопроса 1
@Dorothy
Странно, но у меня ваш код вообще никаких HTML тегов не вставляет, получается голый текст без всего. Чтобы заработало как надо с тегами, я изменил newdiv.innerHTML = copytext на newdiv.innerText = copytext.
https://jsfiddle.net/wuhduL4c/

Попробуйте, может это требуется?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы