我不明白为什么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 © Name";
var copytext = "“" + selection + "”" + 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()
方法(尽管我不明白有什么区别),结果是相同的:它破坏了功能。
感谢您对此的任何输入!
window.getSelection()
不返回字符串,它返回一个Selection
对象。您需要将其转换为字符串,以便在其上调用字符串方法。
selection = selection.toString().trim();