0

div を使用してレイアウトを定義する Web ページ (HTML5/javascript を使用) があります。

ドラッグできるようにしたい要素がいくつかあり、このプロセス中にテキストを選択したくないので、次を使用して、最も外側のコンテナー div の selectstart および onmousedown イベントを無効にしました。

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

ただし、検索目的で選択して書き込みできるようにする必要があるレイアウト内のテキスト ボックスもあります。イベントのブラウザーの既定の動作を無効にする方法に関する多くのトピックを見つけましたが、既定の動作を復元する方法について具体的なものはありません。必要に応じて可能ですが、スクリプトを大幅に書き直すことは避けたいと思います。したがって、テキストボックスだけに適用できる「restoreDefault」タイプの機能/設定があるかどうか疑問に思っていました。

ありがとう。

4

2 に答える 2

1

Use addEventLsitener and removeEventListener for better access to your event listeners:

function fooBar(){
    return false;
}

document.getElementById('mapContainer').addEventListener('selectstart', fooBar);    // Start listening
document.getElementById('mapContainer').removeEventListener('selectstart', fooBar); // Stop lsitening

You can also remove the event listener you currently have like this:

document.getElementById('mapContainer').onmousemove = null;
于 2013-01-10T16:20:36.273 に答える
0

無効にする前に、テキストエリアで開始するかどうかを確認できます。

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 に答える