【问题标题】:Selection and highlighting of text in iphone/ipad web browser safari not working在 iphone/ipad 网络浏览器 safari 中选择和突出显示文本不起作用
【发布时间】:2012-12-04 09:51:45
【问题描述】:

可能重复:Change CSS of selected text using Javascript

我尝试了上面链接中的代码,但没有得到 iPad 浏览器突出显示所选文本的结果。

function makeEditableAndHighlight(colour) {
    var range, sel = window.getSelection();
    if (sel.rangeCount && sel.getRangeAt) {
        range = sel.getRangeAt(0);
    }
    document.designMode = "on";
    if (range) {
        sel.removeAllRanges();
        sel.addRange(range);
    }
    // Use HiliteColor since some browsers apply BackColor to the whole block
    if (!document.execCommand("HiliteColor", false, colour)) {
        document.execCommand("BackColor", false, colour);
    }
    document.designMode = "off";
}

function highlight(colour) {
    var range, sel;
    if (window.getSelection) {
        // IE9 and non-IE
        try {
            if (!document.execCommand("BackColor", false, colour)) {
                makeEditableAndHighlight(colour);
            }
        } catch (ex) {
            makeEditableAndHighlight(colour)
        }
    } else if (document.selection && document.selection.createRange) {
        // IE <= 8 case
        range = document.selection.createRange();
        range.execCommand("BackColor", false, colour);
    }
}

它可以在 safari、chrome 等桌面浏览器中完美运行。但在 iPad safari 浏览器中,选择的方式与任何桌面浏览器中的文本选择不同,我没有得到突出显示文本的结果。

我的简单 HTML 代码是:

     <div><h1>Introduction </h1></div>

     <div>          
            <p>This is an example: </p>
            <p>in other paragraph.</p> 
            <p>one more paragraph  </p>

            <button type="button" onclick="highlight('yellow')">Click Me!</button>
     </div>  

请建议是否需要进行任何更改或需要包含任何其他 api。

【问题讨论】:

    标签: javascript html ipad highlighting mobile-browser


    【解决方案1】:

    您必须通过 touchend-event 触发 highlight-function(以及 + click 以获得桌面支持):

    jQuery

    $('button').on('click touchend', function() {
        highlight('yellow');
    });
    

    Fiddle

    【讨论】:

    • 您使用哪个 iOS 版本?
    • 谢谢它正在工作,在旧版本的 jquery 中它不受支持。我必须下载新的 jquery 库 1.8.3。 .早期我使用不支持它的jquery 1.6.4。
    • @Terry 是的,on-event 处理程序在 1.7 之前的版本中不受支持。 (对于 jQuery .bind)。
    • 您可能还会发现this post 和我一样有用。 iPhone 似乎禁用了与用户突出显示文本相关的任何 javascript - 使用带有 touchstart 和 touchend 的 .bind() 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2022-11-12
    • 2011-08-25
    • 2015-05-03
    • 2012-05-23
    相关资源
    最近更新 更多