2017-02-13 3 views
-1

Этот код выполняет именно то, что я хочу: добавьте информацию об авторских правах в конец скопированного веб-текста. Однако он копирует всю статью. Я хотел бы ограничить его словами 50 слов или 200 символов. Как мне продолжить?Усекать скопированный текст в Интернете

$(document).ready(function() { 
    document.body.oncopy = function() { 
     var body_element = document.getElementsByTagName('body')[0]; 
     var selection; 
     selection = window.getSelection(); 
     var pagelink = "<br />Read more at: <a href='" + document.location.href + "'>" + document.location.href + "</a><br />"; 
     var copytext = selection + pagelink; 
     var newdiv = document.createElement('div'); 
     body_element.appendChild(newdiv); 
     newdiv.innerHTML = copytext; 
     selection.selectAllChildren(newdiv); 
     window.setTimeout(function() { 
      body_element.removeChild(newdiv); 
     }, 0); 
    }; 
}); 

JSFIDDLE DEMO

Я не знаю, чтобы использовать substring или выше код не использует write функцию.

+0

200 _characters_ должен быть легким: '.substring (0, 200)' –

+0

Возможная Дубликат [? Оставьте только первые п символов в строке] (http://stackoverflow.com/questions/7708819/keep-only-first-n-characters-in-a-string) –

+0

Где я могу добавить эту подстроку? Я видел этот пример, но он использует функцию записи, и здесь нет функции записи. Я не очень хорошо разбираюсь в JS. –

ответ

1

Я добавил несколько дополнительных инструкций в ваш код. Во-первых, вырезать первые 200 символов (если есть более 200 символов) из скопированного текста, во-вторых, если есть более 50 слов, вырезайте первые 50 слов. Попытайтесь изменить значения переменной wordsLimit и charactersLimit, чтобы выяснить эффект.

$(document).ready(function() { 
 
    document.body.oncopy = function() { 
 
    \t var wordsLimit = 50; 
 
     var charactersLimit = 200; 
 
     var body_element = document.getElementsByTagName('body')[0]; 
 
     var selection; 
 
     selection = window.getSelection(); 
 
     var limitChar = selection.toString().slice(0,charactersLimit); 
 
\t \t var limitWord = limitChar; 
 
     var iter = 0; 
 
     var end = null; 
 
     limitWord.replace(/\s/g,function(a,b){ 
 
      iter++; 
 
      if(iter===wordsLimit) limitWord = limitWord.slice(0,b); 
 
     }); 
 
     
 
     var pagelink = "<br />Read more at: <a href='" + document.location.href + "'>" + document.location.href + "</a><br />"; 
 
     var copytext = limitWord + pagelink; 
 
     var newdiv = document.createElement('div'); 
 
     body_element.appendChild(newdiv); 
 
     newdiv.innerHTML = copytext; 
 
     selection.selectAllChildren(newdiv); 
 
     window.setTimeout(function() { 
 
      body_element.removeChild(newdiv); 
 
     }, 0); 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam hendrerit orci vel urna tincidunt, id aliquet leo dapibus. Nunc sodales arcu auctor, aliquam augue ut, blandit lorem. Ut eleifend dui in interdum fringilla. Etiam eleifend, sem et varius ornare, massa tellus tincidunt metus, ac ultricies ex diam ac arcu. Pellentesque at scelerisque ex. Quisque lobortis lectus sit amet porttitor dapibus. Nunc eget sagittis enim. Aenean mollis rutrum ante. Etiam lacinia aliquam pellentesque. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam hendrerit orci vel urna tincidunt, id aliquet leo dapibus. Nunc sodales arcu auctor, aliquam augue ut, blandit lorem. Ut eleifend dui in interdum fringilla. Etiam eleifend, sem et varius ornare, massa tellus tincidunt metus, ac ultricies ex diam ac arcu. Pellentesque at scelerisque ex. Quisque lobortis lectus sit amet porttitor dapibus. Nunc eget sagittis enim. Aenean mollis rutrum ante. Etiam lacinia aliquam pellentesque. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> 
 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam hendrerit orci vel urna tincidunt, id aliquet leo dapibus. Nunc sodales arcu auctor, aliquam augue ut, blandit lorem. Ut eleifend dui in interdum fringilla. Etiam eleifend, sem et varius ornare, massa tellus tincidunt metus, ac ultricies ex diam ac arcu. Pellentesque at scelerisque ex. Quisque lobortis lectus sit amet porttitor dapibus. Nunc eget sagittis enim. Aenean mollis rutrum ante. Etiam lacinia aliquam pellentesque. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam hendrerit orci vel urna tincidunt, id aliquet leo dapibus. Nunc sodales arcu auctor, aliquam augue ut, blandit lorem. Ut eleifend dui in interdum fringilla. Etiam eleifend, sem et varius ornare, massa tellus tincidunt metus, ac ultricies ex diam ac arcu. Pellentesque at scelerisque ex. Quisque lobortis lectus sit amet porttitor dapibus. Nunc eget sagittis enim. Aenean mollis rutrum ante. Etiam lacinia aliquam pellentesque. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p> 
 
<p>This is the last line</p>

+0

Большое вам спасибо. Кстати, как мне сделать, если мне нужно усечь только слова, а не символы? Как сделать опцию усечения символов необязательной при усечении слов? –

+0

удалите '.slice (0, charactersLimit)' из 'selection.toString(). Slice (0, charactersLimit);' так, чтобы он выглядел как 'var limitChar = selection.toString();' –

Смежные вопросы