如何在Safari Contextmenu扩展中修改文本

时间:2011-03-12 18:53:59

标签: javascript safari contextmenu

我是javascript和编写扩展程序的新手,所以我需要你的帮助。

我正在尝试创建一个Safari上下文菜单项,允许用户修改他在输入窗口中选择部分或全部文本时输入的文本(就像我在问这个问题时那样) )。
我部分工作,我的扩展程序显示在上下文菜单中,然后点击它调用我的global.html文件,该文件又调用我的结束脚本,inject.js,文件看起来像这样:

function handleMessage(event) {
  var range = window.getSelection();//.getRangeAt(0);
   console.log("range:"+range);
  var selectionParentText = range.startContainer.textContent;
  range.startContainer.textContent = selectionParentText.substring(0,range.startOffset) + "[b]" + range.toString() + "[/b]" + selectionParentText.substring(range.endOffset,selectionParentText.length);
}

safari.self.addEventListener("message", handleMessage, false);

日志显示我选择的文本的值,但第4行生成TypeError: Result of expression 'range.startContainer' [undefined] is not an object.错误。修改所选文本的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

function handleMessage(event) 
{
  var e = document.activeElement;
  if (e.tagName = "textarea")
  {
    var selLen = e.selectionEnd - e.selectionStart;
    e.value = e.value.substr(0, e.selectionStart) + "[b]" + e.value.substr(e.selectionStart, selLen) + "[/b]" + e.value.substr(e.selectionEnd, e.value.length);
  }
}

safari.self.addEventListener("message", handleMessage, false);