Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2015, 16:30
Новичок на форуме
Отправить личное сообщение для ondater Посмотреть профиль Найти все сообщения от ondater
 
Регистрация: 20.11.2015
Сообщений: 3

Как модифицировать скрипт добавляющий текст источник при копировании
Имеется вот такой скрипт:

<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" добавлялся при копировании в середину текста, например после первого или второго предложения, которое заканчивается точкой "."
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2015, 17:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

ondater,
на каждую защиту, найдётся лом ... но если так спокойнее
var text = (''+selection).split('.').join(copyright);
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2015, 18:43
Новичок на форуме
Отправить личное сообщение для ondater Посмотреть профиль Найти все сообщения от ondater
 
Регистрация: 20.11.2015
Сообщений: 3

Сообщение от рони Посмотреть сообщение
ondater,
на каждую защиту, найдётся лом ... но если так спокойнее
var text = (''+selection).split('.').join(copyright);
Понимаю, но моей целью является усложнить жизнь копипастеру.

Кстати, после вставки этого кода, текст вставляется после каждой точки, а нужно только после первой, так можно сделать?
Ответить с цитированием
  #4 (permalink)  
Старый 20.11.2015, 19:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от ondater
так можно сделать?

var text = (''+selection).replace('.',copyright);
Ответить с цитированием
  #5 (permalink)  
Старый 20.11.2015, 21:23
Новичок на форуме
Отправить личное сообщение для ondater Посмотреть профиль Найти все сообщения от ondater
 
Регистрация: 20.11.2015
Сообщений: 3

Сообщение от рони Посмотреть сообщение

var text = (''+selection).replace('.',copyright);
Спасибо! Похоже, это именно то, что мне нужно
Ответить с цитированием
  #6 (permalink)  
Старый 03.02.2017, 17:18
Новичок на форуме
Отправить личное сообщение для Arroyo Посмотреть профиль Найти все сообщения от Arroyo
 
Регистрация: 12.08.2012
Сообщений: 7

Здравствуйте.
Спасибо, как раз искал тоже самое. Но теперь хочу изменить.

Я хочу указать массив из нескольких слов. Если какие-то из них существуют в скопированном тексте, то последнее из них становится ссылкой, если ни одного слова нет, то ссылка ставится в конце.
Если не труд прошу помочь с кодом. Спасибо.

И еще вопрос: в приведенном примере (''+selection). Что это значит? зачем тут кавычки?
Ответить с цитированием
  #7 (permalink)  
Старый 03.02.2017, 17:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Arroyo
зачем тут кавычки?
это один из способов, как можно обьект превратить в строку.
с остальным учебник вверху https://learn.javascript.ru/string
Ответить с цитированием
  #8 (permalink)  
Старый 04.02.2017, 16:00
Новичок на форуме
Отправить личное сообщение для Arroyo Посмотреть профиль Найти все сообщения от Arroyo
 
Регистрация: 12.08.2012
Сообщений: 7

Сообщение от рони Посмотреть сообщение
с остальным учебник вверху 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);
};
Ответить с цитированием
  #9 (permalink)  
Старый 04.02.2017, 16:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Arroyo,
текст можно заменить, только на текст.
Ответить с цитированием
  #10 (permalink)  
Старый 04.02.2017, 17:22
Новичок на форуме
Отправить личное сообщение для Arroyo Посмотреть профиль Найти все сообщения от Arroyo
 
Регистрация: 12.08.2012
Сообщений: 7

спасибо. подскажите, как правильно это написать.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Как задать чтоб данный скрипт работал только при <= 640px экранах ibutterfly777 Общие вопросы Javascript 2 27.08.2014 14:33
Активация checkbox при нажатии на текст и изменение стиля у текста. ilyakor jQuery 2 10.06.2014 19:34
Отследить клик по дочернему объекту AllanZ jQuery 3 05.09.2012 12:38
Как изменить текст при наведении курсора? sewernik Элементы интерфейса 2 13.04.2009 19:31