テキスト選択の禁止について

[新着] Webテンプレートを仮オープンしました



0   名前: みかん : 2007/05/08(火) 20:11  ID:ovaRQqB. sub-LO
テーブルで作られたカレンダーの日付のセルをドラッグ&ドロップすることによって
その範囲のBGの色を変えるScriptを組んでいます。
仕組み自体はできたのですが、日付の数値がテキスト選択状態になり、見た目が悪いので
改善すべく
<body onselectstart="return false" >
としてみました。
この記述でIEは選択状態にならずに処理が行えるようになりましたが、FireFox、Operaでは
選択されてしまいました。
FireFox、Operaで、テキスト選択を禁止にする方法はないでしょうか?
または、MouseDown状態でのテキスト選択を解除する方法なないでしょうか?

1   名前: 匿名 : 2007/05/08(火) 20:11  ID:BD0Er6nW sub-Cz
> 改善すべく

失礼ながら、そのやり方は良くありません。テキスト選択が必要なケースをも巻き込んでしまいます。

まず、IE の onselectstart ハンドラは、ほとんどの要素オブジェクトに付加できます。つまり、カレンダー部分に付ければ十分であり、決して body 要素に付けてはなりません。

また、可能ならばドラッグ&ドロップ開始時に onselectstart ハンドラをフックし、終了時に戻すようにしましょう。ドラッグ&ドロップ時のみテキスト選択不可にすべきです。

> FireFox、Operaで、テキスト選択を禁止にする方法

一応、window.onselect ハンドラはあります。選択後に実行されます。

それよりも、Firefox、Opera、Safari では、getSelection() により選択(Selection)オブジェクトを取得でき、さらに現在の選択範囲を Range オブジェクト(DOM2 Range)としてコントロールできます。これはイベントとは無関係に行えますから、適当にドラッグ&ドロップに組み込めば良い。

一覧へ戻る