【问题标题】:How to disable text selection via jQuery?如何通过 jQuery 禁用文本选择?
【发布时间】:2011-12-02 07:00:03
【问题描述】:

我知道这个问题已经被问过 (here),但我找到的所有答案都涉及 css selector :selection (浏览器尚未广泛支持)。

那么,我怎样才能通过 jQuery 在我的 html 页面上禁用文本选择,而不是依赖 css 技巧?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    这是一个简单的单行,用于禁用在整个页面上选择文本。 (是否应该是另一个问题)

    $(document).bind('selectstart dragstart', function(e) {
      e.preventDefault();
      return false;
    });
    

    【讨论】:

    • 谢谢!简单、优雅的解决方案。
    • 谢谢,如果您删除 dragstart,甚至可以与 jQuery-UI 一起使用
    【解决方案2】:

    如果你想避免插件,你可以从jQuery UI源码中提取相关部分:

    /*!
     * jQuery UI 1.8.16
     *
     * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
     * Dual licensed under the MIT or GPL Version 2 licenses.
     * http://jquery.org/license
     *
     * http://docs.jquery.com/UI
     */
    $.support.selectstart = "onselectstart" in document.createElement("div");
    $.fn.disableSelection = function() {
        return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
            ".ui-disableSelection", function( event ) {
            event.preventDefault();
        });
    };
    
    $("#somediv").disableSelection();
    

    【讨论】:

      【解决方案3】:

      包含 jQuery UI 并使用 $(element).disableSelection()

      但是,禁用文本选择非常对用户不友好,除非在可能意外选择的上下文中使用(例如拖放或用户可能双击以更快执行多项更改的按钮(例如在微调器中) ))

      【讨论】:

      • 好吧,但我不想添加任何插件,因为我在只插入 jquery 的 3 方网站上运行(注入我的小型 javascript sn-p)
      【解决方案4】:

      【讨论】:

      • 跨浏览器好像够了,谢谢!
      • 这是一个很好的解决方案,但不幸的是,$.browser 在 1.9 中已被删除,因此这将失败。
      • 链接已损坏...而且这也是不正确的解决方案 - Halfhoof 的解决方案是正确的,应该被接受。
      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 2011-05-06
      • 1970-01-01
      • 2013-04-29
      • 2012-02-29
      • 2016-09-02
      • 2017-02-01
      相关资源
      最近更新 更多