为什么 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 © 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()
方法来避免复制句子,例如:
" Hello, I have an empty space at the beginning!"
我试过将 trim()
方法放在任何地方,但无论我做什么,它都完全破坏了功能。我已经阅读并重读了该方法的解释,但我没有看到我做错了什么......我的意思是,它应该非常简单:你抓住一个字符串,向它添加 trim()
方法,然后这将创建一个没有任何前导或尾随空格的 new 字符串......但似乎我必须在这里遗漏一些东西,因为它只是破坏了功能...... Javascript 和我一直没能成为好朋友,老实说;我一直觉得它令人沮丧,而且相当令人费解,作为 PHP 的一种姿势,它不介意以任何方式放置! (当然,我说的是我脑子里的感觉!我相信在座的所有专业人士都非常清楚,知道事情的进展和原因——以及为什么它们不像我使用的那样工作他们!)
无论如何,我也尝试过使用strip()
方法(虽然我不明白有什么区别),结果是一样的:它破坏了功能。
在此先感谢您对此的任何意见!
window.getSelection()
不是 return 字符串,它 return 是一个 Selection
对象。您需要将其转换为字符串才能对其调用字符串方法。
selection = selection.toString().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 © 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()
方法来避免复制句子,例如:
" Hello, I have an empty space at the beginning!"
我试过将 trim()
方法放在任何地方,但无论我做什么,它都完全破坏了功能。我已经阅读并重读了该方法的解释,但我没有看到我做错了什么......我的意思是,它应该非常简单:你抓住一个字符串,向它添加 trim()
方法,然后这将创建一个没有任何前导或尾随空格的 new 字符串......但似乎我必须在这里遗漏一些东西,因为它只是破坏了功能...... Javascript 和我一直没能成为好朋友,老实说;我一直觉得它令人沮丧,而且相当令人费解,作为 PHP 的一种姿势,它不介意以任何方式放置! (当然,我说的是我脑子里的感觉!我相信在座的所有专业人士都非常清楚,知道事情的进展和原因——以及为什么它们不像我使用的那样工作他们!)
无论如何,我也尝试过使用strip()
方法(虽然我不明白有什么区别),结果是一样的:它破坏了功能。
在此先感谢您对此的任何意见!
window.getSelection()
不是 return 字符串,它 return 是一个 Selection
对象。您需要将其转换为字符串才能对其调用字符串方法。
selection = selection.toString().trim();