首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Rangy的toggleRange方法?

如何使用Rangy的toggleRange方法?
EN

Stack Overflow用户
提问于 2013-02-10 01:54:37
回答 1查看 197关注 0票数 0

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

我有以下函数,该函数由一个按钮调用以保存选定的文本。然后显示linkBar div,其中包含一个用于链接插入的文本输入。

注意:当我专注于文本输入中的输入文本时,我失去了选择,所以我尝试使用toggleRange()而不是toggleSelection。

代码语言:javascript
复制
function linkIt(){
if (savedSel) {
rangy.removeMarkers(savedSel);
}
savedSel = rangy.saveSelection();
savedSelActiveElement = document.activeElement; 

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

}

在此之后,我有下面的代码,一旦在相同的div中单击一个按钮,就会执行该代码,这一点由前面的函数显示。

代码语言:javascript
复制
    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应用于选定的范围。但不起作用

代码语言:javascript
复制
function toggleLink(linkName) {
    linkApplier = rangy.createCssClassApplier("link", {
        elementTagName: "a",
        elementProperties: {
            href: linkName,
            title: "Rangy home page",
            target: "_self"
        }
    });
    //linkApplier.toggleSelection();
    linkApplier.toggleRange(savedSel);
}
EN

回答 1

Stack Overflow用户

发布于 2013-02-11 01:13:58

在选择恢复之后,您需要调用toggleSelection()。我认为以下几点将解决这个问题(未经测试):

代码语言:javascript
复制
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;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14793858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档