Firefoxでは、chromeとIEのテキストが選択可能ですが、これには何らかの方法がありますか?コードは別の質問から取られました(私は今見つけることができません)ので、古いかもしれませんか? WebKitの使用khtmlUserSelect
の代わりMozUserSelect
についてはChrome/IEでJavascript非選択のテキストが機能しない
disableSelection(document.getElementById("gBar"));
Firefoxでは、chromeとIEのテキストが選択可能ですが、これには何らかの方法がありますか?コードは別の質問から取られました(私は今見つけることができません)ので、古いかもしれませんか? WebKitの使用khtmlUserSelect
の代わりMozUserSelect
についてはChrome/IEでJavascript非選択のテキストが機能しない
disableSelection(document.getElementById("gBar"));
:として、コード内で使用
// Prevent selection
function disableSelection(target) {
if (typeof target.onselectstart != "undefined") //IE route
target.onselectstart = function() { return false }
else if (typeof target.style.MozUserSelect != "undefined") //Firefox route
target.style.MozUserSelect = "none"
else //All other route (ie: Opera)
target.onmousedown = function() { return false }
}
。
/WebKitのをヤモリに関連する両方のスタイルは、あなたがそれを適用するために、クラスを使用することができ、CSSあるとして、あなたは「オン」に選択不可・プロパティを設定して、オペラやMSIEで
:
<script type="text/javascript">
<!--
function disableSelection(target)
{
target.className='unselectable';
target.setAttribute('unselectable','on');
}
//-->
</script>
<style type="text/css">
<!--
.unselectable{
-moz-user-select:none;
-khtml-user-select: none;
}
-->
</style>
注:選択不可能な子要素は渡されません。したがって、ターゲット内にtextNodes以外のものがある場合は、MSIE/opera用の回避策が必要です。
ありがとう、ありがとう –
いいえWebkitプレフィックスを使用するには – Dan
FirefoxのMozUserSelectスタイリングのように、Webkitベースのブラウザ(SafariやChromeなど)には-webkit-user-select: none
を使用できます。
私はOperaで-o-user-select: none
を使用できると思います。しかし、私はそれをテストしていません。あなたが追加することができますWekbit(たとえばChromeとSafariなど)のためにhttp://msdn.microsoft.com/en-us/library/ms534706(VS.85).aspx
ありがとうコードですが、これは3つのすべてのブラウザ(FFで動作しますが、chrome/IEでは動作しません)のオリジナルコードとまったく同じです。 –
残念ながら痛みはありません。 divが他の選択可能なdivに含まれているかどうかは、おそらく問題の一部ですか? –
SafariとChromeで動作します。 しかし、Dr.Molleが書いたように、あなたはおそらくすべきです。だから、CSSクラスにスタイリングを入れ、ターゲットに設定します。 –
:IEの場合
else if (typeof target.style.webkitUserSelect != "undefined") // Webkit route
target.style.webkitUserSelect = "none";
を、 '選択不可' を使用:
IEの場合// Prevent selection
function disableSelection(target) {
if (typeof target.onselectstart != "undefined") //IE route
target.onselectstart = function() { return false }
else if (typeof target.style.userSelect != "undefined") //Some day in the future?
target.style.userSelect = "none"
else if (typeof target.style.webkitUserSelect != "undefined") //Webkit route
target.style.webkitUserSelect = "none"
else if (typeof target.style.MozUserSelect != "undefined") //Firefox route
target.style.MozUserSelect = "none"
else //All other route (ie: Opera)
target.onmousedown = function() { return false }
}
、多分これはあなたを助けることができる
else if (typeof target.unselectable != "undefined") // IE route
target.unselectable = true;
まだ同じ動作 –
@Tom Gullen:ここでテストされているだけで、Chrome用に動作します:http://jsfiddle.net/sje397/Hk3tu/ – sje397
上記のすべての例は、ブラウザのバージョンに基づいて複雑すぎます。 私はsimleソリューションを手に入れました...すべてのブラウザで動作します!
// you can select here which html element you allow to be selected
var ExcludeElems = ["INPUT","SELECT","OPTION"]
function disableSelection (target) {
// For all browswers code will work .....
target.onmousedown = function (e)
{
var i;
var e = e ? e : window.event;
if (e)
for (i=0; i<ExcludeElems.length;i++)
if (e.target.nodeName == ExcludeElems[i])
return true;
return false;
}
あなたはこの機能をさらに複雑にすることができます必要がある場合。 任意のコンテナ要素にこのコードを使用してください...
disableSelection (document)
//disableSelection (document.body)
//disableSelection (divName) ....
どうしますか?たとえそれが機能しても、テキストを再び選択可能にすることは、javasciptを無効にする、またはソースを見ることと同じくらい簡単です。本当に選択を妨げる唯一の方法は、代わりにあらゆる種類のアクセシビリティ問題を引き起こし、検索エンジンからのテキストを隠すことです。 – tdammers
私は誰かがこの笑いを尋ねようとしていることを知っていた、私はこれらの落とし穴を完全に認識しているが、これはデータ保護のためではなく、単に私が作っているWebアプリケーションのパフォーマンスを向上させることである。その中に含まれているテキストが選択されず、アプリが不思議に動作するようになります。 –
私は最近、そのような問題があり、jQueryのアップグレードでそれを解決しました:) – sje397