【问题标题】:Is it possible to distinguish between click and selection?是否可以区分点击和选择?
【发布时间】:2011-11-26 02:45:39
【问题描述】:

我有一个 div 和一个隐藏的孩子。单击div 将切换孩子的可见性。这很好用。

现在用户想要在孩子中选择一些文本。拖动选择有效,但只要释放鼠标按钮,div 就会关闭(因为 inClick 处理程序)。

如果可能的话,我仍然希望能够从孩子的任何地方关闭div,因为孩子可能很大(数百行,所以滚动到div 到切换孩子)。

需要使用 IE6+ 和所有健全的浏览器。我不能直接使用 jQuery :-( 但我可以从 jQuery 复制代码,所以如果 jQuery 有解决方案,我会克隆它。

建议?

【问题讨论】:

    标签: html onclick visibility textselection


    【解决方案1】:

    您可以在关闭您的内部 div 之前检查 window.getSelection() 以查看它是否包含任何内容。

    对于 IE6,您需要将其替换为 document.selection。

    请注意,这是 IE 的专有功能,因此您需要通过对象检测来区分使用哪种方法。

    Working Demo

    【讨论】:

      【解决方案2】:

      你可以在 DIV 的一侧有一个切换控件:

      toggle.onclick = function () { 
          if ( this.className === 'closed' ) {
              this.className = '';
              content.style.display = '';
          } else {
              this.className = 'closed';
              content.style.display = 'none';
          }
      };
      

      现场演示: http://jsfiddle.net/HcVfW/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-24
        • 2023-01-18
        • 2015-07-09
        • 2018-06-24
        相关资源
        最近更新 更多