Как модифицировать скрипт добавляющий текст источник при копировании
Имеется вот такой скрипт:
<script> document.oncopy = function () { var bodyElement = document.body; var selection = getSelection(); var href = document.location.href; var copyright = "<br>Источник: example.com"; var text = selection + copyright; var divElement = document.createElement('div'); divElement.style.position = 'absolute'; divElement.style.left = '-99999px'; divElement.innerHTML = text; bodyElement.appendChild(divElement); selection.selectAllChildren(divElement); setTimeout(function() { bodyElement.removeChild(divElement); }, 0); }; </script> Он добавляет строку текста "Источник: example.com" при копировании текста с сайта. Строка источник, добавляется после скопированного текста. Как сделать так, чтобы текст "Источник: example.com" добавлялся при копировании в середину текста, например после первого или второго предложения, которое заканчивается точкой "." |
ondater,
на каждую защиту, найдётся лом ... но если так спокойнее var text = (''+selection).split('.').join(copyright); |
Цитата:
Кстати, после вставки этого кода, текст вставляется после каждой точки, а нужно только после первой, так можно сделать? |
Цитата:
var text = (''+selection).replace('.',copyright); |
Цитата:
|
Здравствуйте.
Спасибо, как раз искал тоже самое. Но теперь хочу изменить. Я хочу указать массив из нескольких слов. Если какие-то из них существуют в скопированном тексте, то последнее из них становится ссылкой, если ни одного слова нет, то ссылка ставится в конце. Если не труд прошу помочь с кодом. Спасибо. И еще вопрос: в приведенном примере (''+selection). Что это значит? зачем тут кавычки? |
Цитата:
с остальным учебник вверху https://learn.javascript.ru/string |
Цитата:
Почитал, не особо получается. Последнее нужное слово становится ссылкой, но теперь скопированный текст вставляется вместе с <div style="position: absolute; left: -99999px;"> соответственно редактор ничего не видит document.oncopy = function () { var bodyElement = document.body; var selection = getSelection(); var href = document.location.href; var copyright = "<a href='"+document.location.href+"'>Собака</a>"; var pos = (''+selection).lastIndexOf("Собака"); String.prototype.replaceAt=function(index, character) { return this.substr(0, index) + character + this.substr(index+6); } var text = (''+selection).replaceAt(pos, copyright); var divElement = document.createElement('div'); divElement.style.position = 'absolute'; divElement.style.left = '-99999px'; divElement.innerHTML = text; bodyElement.appendChild(divElement); selection.selectAllChildren(divElement); setTimeout(function() { bodyElement.removeChild(divElement); }, 0); }; |
Arroyo,
текст можно заменить, только на текст. |
спасибо. подскажите, как правильно это написать.
|
Arroyo,
document.oncopy = function () { var bodyElement = document.body; var selection = getSelection(); var href = document.location.href; var copyright = "кошка "+ href; var pos = (''+selection).lastIndexOf("Собака"); pos == -1 && (pos = (''+selection).length, copyright = " "+href); String.prototype.replaceAt=function(index, character) { return this.substr(0, index) + character + this.substr(index+6); } var text = (''+selection).replaceAt(pos, copyright); var divElement = document.createElement('div'); divElement.style.position = 'absolute'; divElement.style.left = '-99999px'; divElement.innerHTML = text; bodyElement.appendChild(divElement); selection.selectAllChildren(divElement); setTimeout(function() { bodyElement.removeChild(divElement); }, 0); }; |
Спасибо, что отвечаете.
Дело в том что я хотел, чтобы слово "собака" просто становилось ссылкой на источник, чтобы таким образом незаметно подсунуть ссылку в скопированный текст, а не показывать ее в конце текста. Мой вариант сработал, но вместе со всем скопированным текстом копировался и cозданный div, хотя по идее не должен копироваться. Сейчас div тоже копируется. |
Arroyo,
не могу помочь, не знаю как скопированный текст превратить в ссылку. |
Часовой пояс GMT +3, время: 13:37. |