繁体   English   中英

如何恢复事件的浏览器默认行为? (javascript)

[英]How to restore browser default behavior for an event? (javascript)

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

由于我有一些想要拖动的元素,并且不想在此过程中选择文本,因此我使用以下命令禁用了最外层容器div的selectstart和onmousedown事件:

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;

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

的HTML

<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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM