在Javascript Replace Bookmarklet方面需要帮助

时间:2011-09-06 09:19:43

标签: javascript

我搜索了其他问题并尝试了建议,但我仍然无法成功实现我的书签。我们将对以下代码的任何建议表示赞赏。我的目标是让脚本通过document.getSelection()捕获当前文本选择,然后用加号替换所有点(对于每行数据都有几个点的任务)。

javascript:(function(){ 

  var stringselect = null;

  function replaceString (text) {
    text = text.replace('.','+');
    return text; 
  } 

  var stringselect = document.getSelection();
  var result = replaceString(stringselect);

  alert(result); //for testing purposes, i wanted to see the replaced text in the alert box but it didn't pop up.
})();

2 个答案:

答案 0 :(得分:0)

你还没有说 它不起作用,但有一件事突然出现在我身上:

text = text.replace('.','+');

这只会替换第一个 .。如果要替换所有这些,则必须使用正则表达式而不是字符串作为“find”参数,并且需要在正则表达式上设置“global”标志:

text = text.replace(/\./g,'+');

(您需要在.之前使用反斜杠,因为.在正则表达式中很特殊,但您实际上正在寻找真正的.,因此我们将其转义。){ {1}}分隔正则表达式文字,/是“全局”标记。

另外:我认为您的意思是window.getSelection,而不是g,请注意IE不支持until IE9。如果您需要跨浏览器可靠地获取文本选择,那么您需要完成一些工作。有一个名为rangy的方便的图书馆可以提供帮助。

答案 1 :(得分:0)

Crossbrowser现在

javascript:(function(){ var userSelection; if (window.getSelection) { userSelection = window.getSelection().toString();} else if (document.selection) { rng = document.selection.createRange(); userSelection =rng?rng.text:"ie borked"} var result = (userSelection)?userSelection.replace(/\./g,'+'):"Nothing replaced"; alert(result); })();