Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Rangy';s切换范围方法?_Javascript_Jquery_Rangy - Fatal编程技术网

Javascript 如何使用Rangy';s切换范围方法?

Javascript 如何使用Rangy';s切换范围方法?,javascript,jquery,rangy,Javascript,Jquery,Rangy,我使用下面的代码在a范围内插入一个链接 我有下面的功能,它被一个按钮调用来保存所选的文本。然后显示链接栏div,其中包含用于插入链接的文本输入 注意:当我聚焦在文本输入中的输入文本时,我丢失了选择,因此我尝试使用toggleRange()而不是toggleSelection function linkIt(){ if (savedSel) { rangy.removeMarkers(savedSel); } savedSel = rangy.saveSelection(); savedSelAc

我使用下面的代码在a范围内插入一个链接

我有下面的功能,它被一个按钮调用来保存所选的文本。然后显示链接栏div,其中包含用于插入链接的文本输入

注意:当我聚焦在文本输入中的输入文本时,我丢失了选择,因此我尝试使用toggleRange()而不是toggleSelection

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

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

之后,我有下面的代码,在上一个函数显示的同一个div中单击按钮后执行

    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;
    }
此函数调用以下函数将链接应用程序应用于选定范围。但它不起作用


恢复选择后,需要调用
toggleSelection()
。我认为以下方法可以解决此问题(未经测试):


@我需要你的帮助是的,我知道这个问题:)它在我的名单上。
function toggleLink(linkName) {
    linkApplier = rangy.createCssClassApplier("link", {
        elementTagName: "a",
        elementProperties: {
            href: linkName,
            title: "Rangy home page",
            target: "_self"
        }
    });
    //linkApplier.toggleSelection();
    linkApplier.toggleRange(savedSel);
}
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;
};