Javascript Trim()和replace()在bookmarklet中不起作用

Javascript Trim()和replace()在bookmarklet中不起作用,javascript,regex,bookmarklet,Javascript,Regex,Bookmarklet,我成功创建了一个bookmarklet,该bookmarklet接受当前的文本选择,并将其用于在新浏览器窗口中打开的谷歌搜索: javascript:(function(){query=getSelection();window.open(“+encodeURI(query));})() 这个书签很好用。在这里,当前文本选择被放置在变量“query”中 然后我尝试做一个小的修改,尝试使用trim()删除文本选择中的任何前导或尾随空格。因此,我将bookmarklet更改为: javascript

我成功创建了一个bookmarklet,该bookmarklet接受当前的文本选择,并将其用于在新浏览器窗口中打开的谷歌搜索:

javascript:(function(){query=getSelection();window.open(“+encodeURI(query));})()

这个书签很好用。在这里,当前文本选择被放置在变量“query”中

然后我尝试做一个小的修改,尝试使用trim()删除文本选择中的任何前导或尾随空格。因此,我将bookmarklet更改为:

javascript:(function(){query=getSelection().trim();window.open(“+encodeURI(query));})()

然而,有了这个修正,bookmarklet就不再工作了——当你在书签栏中点击这个bookmarklet时,什么也没有发生

我还尝试使用regex.replace(/^\s+|\s+$/g')来修剪空白,但这也会导致bookmarklet停止工作

知道我做错了什么吗?

返回一个对象,而不是
字符串
对象。您可以通过调用
toString()
来获取
String
对象:


你能试着用下面的代码来修剪吗。 由于trim是JQuery函数。 所以我希望下面的代码可以正常工作

javascript:(function(){query=$.trim(getSelection());window.open("https://www.google.com/search?q="+encodeURI(query));})()

非常感谢您的回复,它发现了问题

正如所建议的,问题似乎在于,在应用.trim()之前,需要通过调用.toString()或类似方法将selection对象转换为string对象

现在工作的bookmarklet是:

javascript:(function(){query=getSelection().toString().trim();window.open(“+encodeURI(query));})()


getSelection()不返回字符串对象。您可以尝试将getSelection()转换为字符串,query=getSelection().toString().trim()query=jQuery.trim(getSelection());或查询=$.trim(getSelection());
javascript:(function(){query=$.trim(getSelection());window.open("https://www.google.com/search?q="+encodeURI(query));})()