2012-01-28 1 views
2

特定の要素のテキスト選択を防ぐためにdisableSelectionというJavaScript関数を使用しています。この関数の宣言は次のとおりです:特定のHTML要素のテキスト選択を有効にするdisableSelection関数の反対

フォーム要素以外のページ全体でテキスト選択を無効にしたいとします。 disableSelection(document.body)を呼び出すと、ジョブは実行されますが、フォーム要素のテキスト選択も無効になります(ただしこれはFirefoxでのみ発生します)。

私の質問は、フォームフィールドがこのテキストディスアラブスクリプトの影響を受けないようにする方法です。フォームフィールド以外のすべてのコンテンツにタグを付けることができますが、それには多大な労力が必要です。

私はこれに関する助けを感謝します。

注:hereからdisableSelectionスクリプトが見つかりました。

答えて

0

イベントからfalseを返すと、ブラウザのデフォルトの動作(テキストの選択)が無効になります。私はそのためにこのような関数を変更します。

function disableSelection(target, enable) 
{ 
    if (typeof target.onselectstart!="undefined") //IE route 
     target.onselectstart=function(){return enable} 
    else if (typeof target.style.MozUserSelect!="undefined") //Firefox route 
     target.style.MozUserSelect=enable?"all":"none"; 
    else //All other route (ie: Opera) 
     target.onmousedown=function(){return enable} 
    target.style.cursor = "default" 
} 

これをあなたのものとして呼び出します。

disableSelection(document.body, false); 
disableSelection(document.forms[0], true); 

動作するはずです(それをテストしていない)

+0

それは動作しませんでしたが、私はより多くを試してみましょう。私が成功すれば、私はここに投稿します。 – Amiga500

+0

それが動作するかどうかをテストするには、disableSelection(document.body、false)を呼び出します。私はdisableSelection(document.body、true)を呼び出しました。それの直後。しかし、選択はページ全体では有効になっていません。何か案が? – Amiga500

+0

どのブラウザとバージョン? – japrescott

0

スクリプトが<body>タグの下でなければなりません。 uはdiv要素のみを無効にしたい場合:disableSelection(document.getElementById('divName'))

0

をこれが私の作品、唯一のクロームでテスト:

function enableSelection(target) { 
    //For IE This code will work 
    if(typeof target.onselectstart != "undefined") { 
     target.onselectstart = function() { 
      return true; 
     } 
    } 

    //For Firefox This code will work 
    else if(typeof target.style.MozUserSelect != "undefined") { 
     target.style.MozUserSelect = "all"; 
    } 

    //All other (ie: Opera) This code will work 
    else { 
     target.onmousedown = function() { 
      return true; 
     } 
     target.style.cursor = "default"; 
    } 
} 
関連する問題