【问题标题】:jquery prevent from dragging selection textjquery防止拖动选择文本
【发布时间】:2019-09-09 18:53:13
【问题描述】:

我想在 css 或 jquery 中防止用户拖动选定的文本

在这张图片中我们可以选择文本,然后复制它,好的。 但是,我不希望能够拖动此文本。

我希望当我开始单击并拖动所选内容时,开始新的选择突出显示。

我已经设法通过这样做来禁用文本的拖动:

$('.content').on('dragstart', function (e)
{
  e.preventDefault();
});

但它不会开始新的选择。

编辑:这里是问题的视频 https://youtu.be/zya0L67Rm2w

这是一项基本功能,但出于人体工程学的原因,我希望能够禁用它。我有一个代码块,我希望该代码块易于选择,并且不可拖动

谢谢。

【问题讨论】:

  • 你测试的是什么浏览器?当我在 Chrome 中尝试您的代码时,我能够创建新的选择,但仍然无法拖动它们。
  • 在 chrome 的最后一个版本中

标签: jquery css selection highlight


【解决方案1】:

如果您在 .content 类上使用 preventDefault,它可以停止仅在内容块/选择上开始的拖动,但正如您所演示的,您仍然可以从它周围的空白处单击并拖动以开始基本的文本拖动。它内置在浏览器/操作系统中以实现这种行为。

要阻止它,您还需要防止拖动 HTML/BODY 标记(或页面容器标记,如果您有更大的容器):

$('html, body').on('dragstart', function (e)
{
  e.preventDefault();
});

【讨论】:

  • 不幸的是,之后它不会开始新的选择。它确实停止了拖动(就像在我的例子中一样),但它也禁用了新的选择
  • 当它开始拖动时,脚本取消了事件,这意味着浏览器现在什么都不做(并且肯定没有开始新的选择)。要开始新的选择,您必须单击并再次选择。据我所知,没有办法解决这个问题,无需再次单击即可开始第二次选择来停止所有文本拖动。
  • 我已经看到了一个完全符合我要求的网站。这里是:thegamedev.guru/unity-addressables-learn-workflows 在代码部分(向下滚动一点),我们可以选择两次而不会产生不必要的拖拽。
  • 我能问一下您要通过阻止点击/拖动文本来完成什么吗?即使在您的示例页面中,人们仍然可以选择文本、复制并将其粘贴到其他地方。停止单击/拖动并不会停止在 thegamedev.guru 上从该框中复制代码的能力。否则,该站点有一个复杂的 onDragStart 函数,它可能正在执行此文件的 6506 之类的操作:thegamedev.guru/wp-content/plugins/wp-codemirror-block/vendor/…
  • 出于人体工程学原因:我希望人们在代码块中复制/粘贴文本,但我不想能够选择和拖动。这是为了方便用户
猜你喜欢
  • 1970-01-01
  • 2011-02-16
  • 2011-07-22
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多