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

问题描述 投票:0回答:1

我不明白为什么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()方法,然后将创建一个没有任何前导或尾随空格的new字符串...但是似乎我在这里一定缺少一些东西,因为它简单地破坏了功能...我和Javascript从未能够成为好朋友,老实说;作为PHP的一种姿势,我总是觉得它令人沮丧,甚至令人费解,不介意以一种或另一种方式放置它! (当然,我是在谈论我的大脑感觉如何!我敢肯定,这里的所有专家都对此深有体会,并且知道事情发展的方向和原因,以及为什么它们无法按照我使用的方式工作他们!)

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

感谢您对此的任何输入!

javascript string trim strip
1个回答
0
投票

window.getSelection()不返回字符串,它返回一个Selection对象。您需要将其转换为字符串,以便在其上调用字符串方法。

selection = selection.toString().trim();
© www.soinside.com 2019 - 2024. All rights reserved.