2013-02-10 47 views
0

我正在使用以下代碼在範圍內插入鏈接。如何使用Rangy的toggleRange方法?

我有以下函數被按鈕調用來保存選定的文本。然後它顯示linkBar div,其中包含用於鏈接插入的文本輸入。

注意:當我專注在文本輸入中輸入文本我失去了選擇,所以我試圖用toggleRange()而不是toggleSelection。

function linkIt(){ 
if (savedSel) { 
rangy.removeMarkers(savedSel); 
} 
savedSel = rangy.saveSelection(); 
savedSelActiveElement = document.activeElement; 

$("#linkBar").css({"display":"block", "top": "150px", "left": "500px"}); 

}

之後,我有以下的代碼執行一次按鈕被點擊這是由先前的功能表現出相同的股利。

submitLink.ontouchstart = submitLink.onmousedown = function() { 
     var linkName = $("#linkText").val(); 
     toggleLink(linkName); 
     $("#linkBar").css({"display":"none"}); 
     if (savedSel) { 
      rangy.restoreSelection(savedSel, true); 
      savedSel = null; 
      gEBI("restoreButton").disabled = true; 
      window.setTimeout(function() { 
       if (savedSelActiveElement && typeof savedSelActiveElement.focus != "undefined") { 
        savedSelActiveElement.focus(); 
       } 
      }, 1); 
     } 

     return false; 
    } 

該函數調用以下函數將linkApplier應用於所選範圍。但它確實工作

function toggleLink(linkName) { 
    linkApplier = rangy.createCssClassApplier("link", { 
     elementTagName: "a", 
     elementProperties: { 
      href: linkName, 
      title: "Rangy home page", 
      target: "_self" 
     } 
    }); 
    //linkApplier.toggleSelection(); 
    linkApplier.toggleRange(savedSel); 
} 
+0

@TimDown我需要你的幫助 – 2013-02-10 11:20:42

+0

是的,我知道這個問題的:)這是我的名單上。 – 2013-02-10 23:51:36

回答

0

你需要調用toggleSelection()選擇恢復後。我認爲有以下將修復它(未經):

submitLink.ontouchstart = submitLink.onmousedown = function() { 
    var linkName = $("#linkText").val(); 
    $("#linkBar").css({"display":"none"}); 
    if (savedSel) { 
     rangy.restoreSelection(savedSel, true); 
     toggleLink(linkName); 
     savedSel = null; 
     gEBI("restoreButton").disabled = true; 
     window.setTimeout(function() { 
      if (savedSelActiveElement && typeof savedSelActiveElement.focus != "undefined") { 
       savedSelActiveElement.focus(); 
      } 
     }, 1); 
    } 

    return false; 
};