2

IE8 テキスト選択の問題。

jquery ui を使用して、サイズ変更可能な div を作成しました。したがって、基本的に、div テキストのサイズを変更すると選択され、再度サイズを変更する必要がある場合は、LI の外側をクリックしてから再度サイズを変更する必要があります。

私はもう試した

-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;

-webkit-user-drag: none; 
-moz-user-drag: none; 
user-drag: none;

また、いくつかのjsコードニペットも試しましたが、修正できませんでした。

私のフィドル:http://jsfiddle.net/svXTa/16/

何か助けはありますか?

以下が問題の画像です。

ここに画像の説明を入力

4

3 に答える 3

2

理想的な解決策は、CSS プロパティuser-selectを使用して、すべてのベンダー プレフィックスと共にテキスト選択を無効にすることです。

-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;

残念ながら、CSS ソリューションは IE8 ではサポートされていないため、引き続き Javascript を使用する必要があります。

Brandon が提案したように、jQuery UIdisableSelection()は 1 つのオプションですが、望ましくない副作用がいくつかある可能性があります。jQuery UI ソース コードを見ると、関数は、存在する場合はイベントを短絡することによって機能しonselectstart、そうでない場合はキャンセルしonmousedownます。onselectstartは非標準であり、Firefox ではサポートされていないため、これによりそのブラウザーでのクリックが無効になり、おそらく望ましくありません。

最善の解決策は、上記の CSS といくつかの Javascript を組み合わせて無効にし、次のようなものonselectstartだけを使用することです。onselectstart

$("ul, #dgArea").on("selectstart", function(e) { e.preventDefault(); });
于 2013-12-05T20:39:30.133 に答える
2

使用する

$('ul, #dgArea').disableSelection();

これにより、最初のマウス プレスがこれらの要素の 1 つで発生した選択のみが無効になります。マウスの押下が他の場所で開始された場合でも、テキストが強調表示される可能性があります。

コンテナ内のテキストを強調表示できることを気にしない場合は、.container レベルで設定できます。

于 2012-08-11T08:38:44.770 に答える
1

CSS だけでは機能しません。これは、私にとってうまく機能するIE8固有の純粋なJSソリューションです。

// test if is an old browser with lazyload optimisation
// because I often need to test if it is IE8
function isIE8(){
    var rv = -1; // Return value assumes failure.
    var appName = navigator.appName.toLowerCase();

    if (appName.indexOf('nternet')*appName.indexOf('xplorer') > 1) {
        var ua = navigator.userAgent.toLowerCase();
        var re = new RegExp("msie ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua))
            rv = parseFloat(RegExp.$1);
    }
    // LazyLoad optimisation
    isIE8 = function(){return (rv == 8);};
    return isIE8(); // 2 : call
}

function disableSelection(anElt){
// double check because some browsers mess with navigator.appName and userAgent
if(isIE8 && anElt.attachEvent) 
    anElt.attachEvent("onselectstart", function(){return false;});
}

ほら:)

于 2015-03-03T10:57:26.217 に答える