モバイル ブラウザでテキストを選択したときに、ネイティブの動作をオーバーライドする方法があるかどうかを知りたいです。独自のアクション バーを提供することで、iPhone と Android デバイスの両方をサポートしようとしています。
任意のヒント?
モバイル ブラウザでテキストを選択したときに、ネイティブの動作をオーバーライドする方法があるかどうかを知りたいです。独自のアクション バーを提供することで、iPhone と Android デバイスの両方をサポートしようとしています。
任意のヒント?
イベントを使用してネイティブ機能と一緒に「アクションバー」を表示することは非常に簡単ですがselectionchange
、ネイティブの動作を「置き換え」たい場合は、選択全体を最初から偽造するか、selectionchange
イベントを使用して 2 番目のたとえば、選択したテキストを色付きのスパン要素で囲み、実際の選択をキャンセルします (アクションバーを表示している間)。この方法の問題は、1) ネイティブアクションバーが一瞬表示される可能性があることと、2)経験は、ユーザーが危険な影響を与えることに慣れているものとは異なります。一方、最初から選択を行いたい場合は、user-select
css プロパティを使用してテキスト選択を無効にし、次に touchstart と thouchend に基づいてどのテキストを「選択」するか (色付きのスパンを使用) を決定します (現実的には、非常に制御された環境 (テキストのみのリーダー アプリケーションなど) でのみ可能です)。
Firefox と Opera ではイベントが発生しないため、これは機能しないことに注意してください。ドキュメントでイベント ハンドラーを使用し、opera モバイルと Firefox モバイルをサポートするために他のすべての touchend イベントのバブリングを停止selectionchange
する必要があります。(動作せず、使用する必要がtouchend
あるという事実のクレジットは、Tim Down に送られます)select
selectionchange
参照:
私が作成した上記の jsFiddle デモでは、プラグインを使用して、AndroidまたはiOSデバイス (デスクトップ ブラウザーも同様)でテキストのブロックが選択されないようにすることができます。
これは、jsFiddle で示されているjQuery イベント リスナーなど、他のマークアップに干渉しません。.click();
使い方は簡単で、jQuery プラグインをインストールした後のサンプル マークアップを次に示します。
サンプル HTML:
<p class="notSelectable">This text is not selectable</p>
<p> This text is selectable</p>
サンプル jQuery:
$(document).ready(function(){
$('.notSelectable').disableSelection();
});
完全な jQuery プラグイン:
$.fn.extend({
disableSelection: function() {
this.each(function() {
this.onselectstart = function() {
return false;
};
this.unselectable = "on";
$(this).css('-moz-user-select', 'none');
$(this).css('-webkit-user-select', 'none');
});
}
});
選択を防ぐことが目的の場合は、次のような CSS を使用できます。
body
{
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
user-select: none;
}