回答:
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
これらのスタイルを、IE以外のすべてのブラウザとIE10のスパンに適用することもできます。
span.no_selection {
user-select: none; /* standard syntax */
-webkit-user-select: none; /* webkit (safari, chrome) browsers */
-moz-user-select: none; /* mozilla browsers */
-khtml-user-select: none; /* webkit (konqueror) browsers */
-ms-user-select: none; /* IE10+ */
}
-ms-user-select: none;
を参照してくださいblogs.msdn.com/b/ie/archive/2012/01/11/... @PaoloBergantino
プレーンなJavaScriptでは:
element.addEventListener('mousedown', function(e){ e.preventDefault(); }, false);
またはjQueryで:
jQuery(element).mousedown(function(e){ e.preventDefault(); });
return false
使用event.preventDefault()
しました。
element
は、textareaの場合のみです(はい)。
ダブルクリック後にのみテキストが選択されないようにするには:
MouseEvent#detail
プロパティを使用できます。mousedownイベントまたはmouseupイベントの場合、1に現在のクリック数を加えたものです。
document.addEventListener('mousedown', function (event) {
if (event.detail > 1) {
event.preventDefault();
// of course, you still do not know what you prevent here...
// You could also check event.ctrlKey/event.shiftKey/event.altKey
// to not prevent something useful.
}
}, false);
https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detailを参照してください
(event.detail === 2)
ダブルクリックのみを防止するために使用します(トリプルクリックなどは不可)
FWIW、親要素のどこかをダブルクリックしたときに、どういうわけか選択したくない子要素の親要素に設定user-select: none
しました。そしてそれはうまくいきます!クールなことは、テキストの選択などがまだ子要素で機能することです!contenteditable="true"
以下のようなので:
<div style="user-select: none">
<p>haha</p>
<p>haha</p>
<p>haha</p>
<p>haha</p>
</div>
style="user-select: note"
私が解決しようとしていた問題を並べ替えました:)
ページ要素内のコンテンツを選択不可にする単純なJavaScript関数:
function makeUnselectable(elem) {
if (typeof(elem) == 'string')
elem = document.getElementById(elem);
if (elem) {
elem.onselectstart = function() { return false; };
elem.style.MozUserSelect = "none";
elem.style.KhtmlUserSelect = "none";
elem.unselectable = "on";
}
}
Angular 2+のソリューションをお探しの方に。
mousedown
テーブルセルの出力を使用できます。
<td *ngFor="..."
(mousedown)="onMouseDown($event)"
(dblclick) ="onDblClick($event)">
...
</td>
場合は防止しdetail > 1
ます。
public onMouseDown(mouseEvent: MouseEvent) {
// prevent text selection for dbl clicks.
if (mouseEvent.detail > 1) mouseEvent.preventDefault();
}
public onDblClick(mouseEvent: MouseEvent) {
// todo: do what you really want to do ...
}
dblclick
期待通りの出力が仕事に続きます。
古いスレッドですが、オブジェクトにバインドされているすべての偶数を無効にするのではなく、ページ上のランダムで不要なテキストの選択のみを防ぐため、よりクリーンであると私は思いました。それは簡単で、私にはうまくいきます。以下に例を示します。「右矢印」クラスのオブジェクトを数回クリックしたときにテキストが選択されないようにしたい:
$(".arrow-right").hover(function(){$('body').css({userSelect: "none"});}, function(){$('body').css({userSelect: "auto"});});
HTH!
任意の方法で、またダブルクリックでのみテキストを選択しないようにする場合は、user-select: none
css属性を使用できます。私はChrome 68でテストしましたが、https://caniuse.com/#search=user-selectによると、それは他の現在の通常のユーザーのブラウザーで動作するはずです。
動作上、Chrome 68では子要素によって継承され、要素を囲むテキストを含むテキストが選択された場合でも、要素に含まれるテキストを選択できませんでした。