Почему метод trim () не работает, а нарушает мою функцию? - PullRequest
0 голосов
/ 07 апреля 2020

Я не понимаю, почему метод trim() не работает для меня здесь:

function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection;
    selection = window.getSelection();
    selection = selection.trim(); // *** HERE IT IS! ***
    var pagelink = "<br /><br /> Read more at: <a href='"+document.location.href+"'>"+document.location.href+"</a><br />Copyright &copy; Name";
    var copytext = "&ldquo;" + selection + "&rdquo;" + 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;

Дело не только в том, что он не делает то, что должен, но кажется, что есть Ошибка в использовании этого метода здесь, так как он нарушает функцию.

Я получил эту функцию копирования-атрибуции javascript через Интернет. Само по себе это прекрасно работает, но мне нужно добавить двойные кавычки в начале и в конце скопированного выделения, поэтому мне нужно добавить метод trim(), чтобы избежать копирования таких предложений, как:

" Здравствуйте, у меня есть пустое место в начале! "

Я пытался поместить метод trim() везде, но что бы я ни делал, это полностью нарушает функцию. Я прочитал и перечитал объяснение метода, и я не вижу, что я делаю неправильно ... Я имею в виду, это должно быть довольно просто: вы берете строку, добавляете к ней метод trim(), и это ' Я создам новую строку без начальных или конечных пробелов ... Но, похоже, я что-то здесь упускаю, так как это просто нарушает функцию ... Javascript и я никогда не смог стать хорошими друзьями, если честно; Я всегда находил это разочаровывающим и довольно запутанным, как позу, скажем, PHP, которая не возражает против того, чтобы ее поместили так или иначе! (Конечно, я говорю о том, как это кажется моему мозгу! Я уверен, что все вы, профессионалы здесь, прекрасно это понимаете и знаете, где что-то go и почему - и почему они не работают так, как я ». я использую их!)

Во всяком случае, я также пытался использовать метод strip() (хотя я не могу понять, в чем разница), и результат тот же: он нарушает функцию.

Заранее благодарим за любой вклад в это!

1 Ответ

1 голос
/ 07 апреля 2020

window.getSelection() не возвращает строку, он возвращает Selection объект. Вам необходимо преобразовать его в строку, чтобы вызвать для него строковые методы.

selection = selection.toString().trim();
...