【问题标题】:Selecting text Programmatically Mobile Safari以编程方式选择文本 Mobile Safari
【发布时间】:2012-09-10 23:48:06
【问题描述】:

我在我的网站上选择文本时遇到问题。我有一个 div 块,并希望在 iPhone/Android 上触摸 div 块时选择里面的所有文本。到目前为止,我已经尝试过该方法:Selecting text in mobile Safari on iPhone

像这样:

<div ontouchstart="this.selectionStart=0; this.selectionEnd=this.value.length;">

我还尝试根据来自不同来源的建议在我的 JS 文件中创建一个函数来执行此操作:

HTML

<div ontouchstart="touchStart(event, this);>

JS

function touchStart(event, obj) {
  var range = window.getSelection();
  var sel = window.getSelection()

  range.setStart(obj, 0);
  range.setEnd(obj, obj.innerHTML.length);
  sel.removeAllRanges();
  sel.addRange(range);
  //range.execCommand("BackColor", false, colour);
}

到目前为止,这两种方法似乎都不起作用。在 iPhone 上的 Safari 上进行测试时,我似乎使用第二种方法时遇到的一个错误是:

JavaScript: Error undefined TypeError: 'undefined' is not an object

【问题讨论】:

    标签: javascript iphone mobile safari mobile-safari


    【解决方案1】:

    selectionStartselectionEnd 只是 textareas 和文本输入的属性,因此它们已被淘汰。移动 Safari 与所有其他主流浏览器具有相同的选择 API,但您只能影响已显示的可见选择。

    HTML:

    <div ontouchstart="selectElementContents(this);">
    

    JS:

    function selectElementContents(el) {
        var sel = window.getSelection();
        var range = document.createRange();
        range.selectNodeContents(el);
        sel.removeAllRanges();
        sel.addRange(range);
    }
    

    【讨论】:

    • 我不确定我是否遵循最后一点,“如果它已经显示,你只能影响可见的选择”。我在我的网站上用 iPhone 4s 试过了,但没有用。进入一个奇怪的状态,其中 div 内的文本不可选择。在 JSFiddle 上也试过:jsfiddle.net/tJa5g
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2012-11-09
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    相关资源
    最近更新 更多