2011-03-12 92 views
1

修改文本,我的品牌新的JavaScript和编写扩展,所以我需要你的帮助。我怎么能在Safari浏览器文本菜单扩展

我试图创建一个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.错误。什么是修改所选文本的正确方法?

回答

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);