以前から試してみたかったことを試してみました。
内容は、「マウスで範囲指定したらアラート表示」です。「テキストがコピペされるのが嫌だ!」という要望があるとして、それに対する方法はなにかないかなと考えた結果です。
とはいえ、遊びみたいなもので実用的ではありません。
「簡単にできるだろう」と思っていたら思いのほか上手くいかず、ある程度形にできた所で終わらせた状態です。
作ってみました程度の記事ですから、サラッと流していただけると幸いです。
[追記:2015.6.29 アラートの内容にブラウザ情報と日時を追加]
「マウスで範囲指定したらアラート表示」
以下のリンク先にサンプルがありますので、そちらをご覧下さい。
続いてコードを。
window.onload = function(){
var weeks = new Array('日','月','火','水','木','金','土');
var now = new Date();
var year = now.getYear(); // 年
var month = now.getMonth() + 1; // 月
var day = now.getDate(); // 日
var week = weeks[ now.getDay() ]; // 曜日
var hour = now.getHours(); // 時
var min = now.getMinutes(); // 分
var sec = now.getSeconds(); // 秒
if(year < 2000) { year += 1900; }
// 数値が1桁の場合、頭に0を付けて2桁で表示する指定
if(month < 10) { month = "0" + month; }
if(day < 10) { day = "0" + day; }
if(hour < 10) { hour = "0" + hour; }
if(min < 10) { min = "0" + min; }
if(sec < 10) { sec = "0" + sec; }
var currSerectionArea = document.getElementById("copycheck");
currSerectionArea.addEventListener('mouseup',function(){
var currSelection = window.getSelection();
var currSelectionString = String(document.getSelection()).length;
var currNavigator = navigator.appName;
var currAppVer = navigator.appVersion;
if(currSelectionString > 300){
alert( '============\n■あなたの閲覧環境\n[' + currNavigator + currAppVer +']\n■アクセス日時\n' + year + '年' + month + '月' + day + '日(' + week + ')[' + hour + '時' + min + '分' + sec + '秒]\n============\n\nあなたは下記のように300文字以上を選択しました。\nもしもこの文章を無断転載した場合「毎朝近所の地蔵にお供え物をする」という約束に同意したとみなします。\n\n============\n' +currSelection + '\n============' );
}
},false);
}
サンプルにも書いていますが、getSelectiontとaddEventListenerしか使っていないのでIE9以降でなければ動作しません。
300文字以上の範囲選択でアラートが表示されます。単語程度であれば引用や次の検索のための行為である可能性が高かったので、引用のは範囲を超えそうな(もちろん記事の文字数によるんですが)とり300にしています。
感知する範囲を限定するために、サンプルではblockquoteに「copycheck」というIDをつけました。コードの「document.getElementById(“copycheck”)」でその部分の指定を行っています。
ただし指定が適当なため、該当箇所の前後から範囲選択を行うとそこも含めてしまいます。指定範囲外でmousedownした場合はそこを除くようにすればいいとは思うのですが、上手くできなかったのでいまはここまでで置いています。
もっとも、趣旨を考えるとあまり問題ではないかもしれません。ともかく大量に範囲選択された場合にアラートがでればよいので。
なお、以下を主に参考にしました。感謝です。
ブラウザ情報と日時
ブラウザ情報と日時の表示を追加していますが、こういう要素が相手に圧力をあたえることができるのではと考えています。
単にJavascriptで表示しているだけで、なにがどうなる訳でもありませんが。
なお、時間の表示には下記のサイトのコードを参照しました。感謝です。
経緯
冒頭で書いていますので不要かと思いますが、一応簡単に経緯をご説明します。
右クリック禁止以外でコピペを抑制したい場合、スパムサイトの手法が使えるのかなと考えました。
具体的には「何らかのアラートを表示させて注意を促し、それを消させることでアラート内容に同意したという意味合いを強制的に持たせる」という感じでしょうか。
平たく言えば、詐欺サイトの架空請求の時に使われていそうな方法です。なので、何か具体的な効果がある訳ではありません。悪意を持った気の弱い人(がいるのかわかりませんが…)にプレッシャーをかける程度でしょう。
結び
今はただアラートを表示させているだけですが、もっと表示方法や表示内容は変えていけるでしょう。より注意を引く形にしたり危機感を煽ることも可能かもしれません。例えば、IPや時間を表示させて「見てるぞ!」的なプレッシャーを与えるなど。
ただし、いずれにせよこんな機能をつけてしまうと普通のユーザーには非常に嫌がられると思います。また、気にしない人にはまったく効果もありません。
なので、マイナスにしかならないと思います。作っておいてなんですが。
0人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。