【问题标题】:Mimic tweet EventHandler模仿推文事件处理程序
【发布时间】:2020-01-27 03:14:53
【问题描述】:

我正在使用 react 并想模仿 twitter 推文中使用的 EventHandler(以及我确定的许多其他事情)。

如果元素的文本被突出显示并且在鼠标向上触发时,什么也不做,但如果只是单击它而没有突出显示任何文本,则触发事件。

这不是onClick, onMouseUp, onMouseDown, or onMouseDownCapture 的标准行为。我也试过添加onSelect={e => e.preventDefault}

我可以测量鼠标按下的时间量,如果超过 x 毫秒什么也不做,但我觉得有一个更简单(或更正确)的解决方案。有人知道吗?

<div
 className='post'
 onClick={() => {
          if(text is highlighted){
            do nothing;
          }
          else{
               do something;
          } 
}>

【问题讨论】:

  • 请包含一个最小的可重现示例。
  • 我已经包含了一些伪代码,但实际上没有什么可显示的了。

标签: javascript reactjs dom event-handling


【解决方案1】:

可能会有所帮助

一个 Selection 对象表示用户选择的文本范围或插入符号的当前位置。要获取用于检查或操作的 Selection 对象,请调用 window.getSelection().more


 <div
      className="post"
      onClick={() => {
        if (window.getSelection().toString() !== "sample")
          console.log("Do somthings");
        else console.log("Do nothing");
      }}
    >
      sample
  </div>

【讨论】:

  • 谢谢亚历克斯。这正是我所需要的。这就是我最终得到的结果:onClick={() =&gt; window.getSelection().toString().length === 0 &amp;&amp; doSomething() } 就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
相关资源
最近更新 更多