如何恢复事件的浏览器默认行为

How to restore browser default behavior for an event?

本文关键字:浏览器 默认 事件 何恢复 恢复      更新时间:2023-09-26

我有一个网页(使用HTML5/javascript)使用div来定义布局。

由于我有一些元素,我希望能够拖动,不希望在此过程中选择文本,我已经禁用了最外层的容器div的selectstartonmousedown事件,使用:

document.getElementById("mapContainer").onselectstart = function(){return false;};
document.getElementById("mapContainer").onmousedown = function(){return false;};

然而,我在布局中也有一个文本框,我需要能够选择并写入搜索目的。我发现了许多关于如何禁用浏览器默认行为的主题,但没有具体的关于如何恢复默认行为的主题。如果需要的话,我可以,但我想避免对脚本进行重大重写。因此,我想知道是否有一个"restoreDefault"类型函数/设置,我可以应用到文本框

使用addEventLsitenerremoveEventListener来更好地访问您的事件侦听器:

function fooBar(){
    return false;
}
document.getElementById('mapContainer').addEventListener('selectstart', fooBar);    // Start listening
document.getElementById('mapContainer').removeEventListener('selectstart', fooBar); // Stop lsitening

您还可以像这样删除当前拥有的事件侦听器:

document.getElementById('mapContainer').onmousemove = null;

您可以在禁用它之前检查它是否在文本区开始:

<div id="mapContainer">
  <h2>What what?</h2>
  <textarea id="ta">FOO BAR WORLD</textarea>
</div>
JavaScript

function testForElement(e) {
      e = e || window.event;
      var elem = e.srcElement || e.target;
      return elem && elem.id==="ta";
}
var myDiv = document.getElementById("mapContainer");
myDiv.onselectstart = testForElement;
myDiv.onmousedown = testForElement;

JSFiddle