0

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

由于我希望能够拖动一些元素并且不希望在此过程中选择文本,因此我禁用了最外层容器 div 的 selectstart 和 onmousedown 事件,使用:

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

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

谢谢。

4

2 回答 2

1

使用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;
于 2013-01-10T16:20:36.273 回答
0

您可以在禁用它之前检查它是否在 textarea 中启动:

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

于 2013-01-10T16:24:34.630 回答