为什么 trim() 方法不起作用,反而破坏了我的功能?

Why is the trim() method not working but instead breaking my function?

我不明白为什么 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() 方法来避免复制句子,例如:

" Hello, I have an empty space at the beginning!"

我试过将 trim() 方法放在任何地方,但无论我做什么,它都完全破坏了功能。我已经阅读并重读了该方法的解释,但我没有看到我做错了什么......我的意思是,它应该非常简单:你抓住一个字符串,向它添加 trim() 方法,然后这将创建一个没有任何前导或尾随空格的 new 字符串......但似乎我必须在这里遗漏一些东西,因为它只是破坏了功能...... Javascript 和我一直没能成为好朋友,老实说;我一直觉得它令人沮丧,而且相当令人费解,作为 PHP 的一种姿势,它不介意以任何方式放置! (当然,我说的是我脑子里的感觉!我相信在座的所有专业人士都非常清楚,知道事情的进展和原因——以及为什么它们不像我使用的那样工作他们!)

无论如何,我也尝试过使用strip()方法(虽然我不明白有什么区别),结果是一样的:它破坏了功能。

在此先感谢您对此的任何意见!

window.getSelection() 不是 return 字符串,它 return 是一个 Selection 对象。您需要将其转换为字符串才能对其调用字符串方法。

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