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



我不明白为什么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,它不介意以这样或那样的方式放置!

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

提前感谢您对此的任何意见!

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

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

最新更新