それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

テキストが選択できないサイトに対応する。

まれにあるんですよね。テキストが選択でないサイト。

CSS User-selection:none と

以前に書いたCSSでユーザーの文字列選択をさせない:no-selection css - それマグで!

javascript onselectstart / onmousedown の組合せ

JSのイベントハンドラを使って実現されてることが多い。

というわけで、対策用のUserJS

document.body.appendChild(function(){
  sc = document.createElement("script");
  var code = function(){
    Array.apply(null,document.querySelectorAll("*")).forEach( 
      function(e){
        if( getComputedStyle(e)["-webkit-user-select"]){
          e.style.webkitUserSelect = "all"
        }
        if( getComputedStyle(e)["user-select"]){
          e.document.body.style.userSelect = "all"
        }
    })
    //選択を検知するマウスイベント検出を無効にする。
    Array.apply(null,document.querySelectorAll("*")).forEach( 
      function(e){
        ["onmousedown","onselectstart"].forEach(function(handle_name){
          if( e[handle_name]){
            e[handle_name] = null;
          }          
        })
    })
  }
  src = "("+code.toString()+")()"
  sc.type="text/javascript";
  sc.text=src
  return sc;
}()
);

onselectstart と user-selection :none は「テキスト選択拒否」のためじゃない。

HTMLでアプリケーションを作ると文字列選択が暴発して、画面に文字選択が溢れちゃったり。ボタンの文字列が選択されて意図しない動作になってしまう。

ソウイウことを防ぐためのものだろう?

いまどき右クリック禁止的なことを、user-selection:none でやるのはどうかと思う。

やりたきゃ、暗号化テキスト取得後Canvasに埋め込むとかした方がいいぞたぶん。 それでも、画面キャプチャされてOCRで取り出せると思うし、検索にかからなくなるからシンドいと思うけど。

選択できない例

http://www.jmca.jp/column/tu/tu61.html