2011-03-12 97 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);