日本では仮想通貨を発掘するスクリプトの設置によって逮捕者が出たり、EUではGDPRが施行されたりと、個人の情報やリソースを適切に扱うことに対するプレッシャーが強くなっています。気になることがあれば、ユーザの了承をとっておくのが基本となるでしょう。 今回紹介するYettはユーザの了承をとってからスクリプトを実行する、そんなライブラリです。

Yettの使い方

まず動きを止めるスクリプトの名前を登録します。

YETT_BLACKLIST = [
    /inline\.js$/,
    /dynamic\.js$/
]

次にライブラリを読み込みますが、 javascript/blocked と定義するのがコツです。

<script src="./lib/yett.min.js"></script>
<script src="inline.js" type="javascript/blocked"></script>

スクリプトタグの自動生成であっても動きを止められます。

(function() {
    var script = document.createElement('script')
    script.setAttribute('src', 'dynamic.js')
    script.setAttribute('type', 'application/javascript')
    document.head.appendChild(script)
})()

そして yett.unblock メソッドで実行を開始できます。

<button onclick="yett.unblock('inline.js')">
    Unblock the inline script
</button>
<button onclick="yett.unblock('dynamic.js')">
    Unblock the dynamic script
</button>

YettはJavaScriptの自動実行を防止し、ユーザの許可をもって動作を開始できるようになります。もちろん、それによってうまく動かない機能が出てしまうかも知れませんが、ユーザの選択は大事です。特にソーシャルウィジェットや解析系はなくとも困らないものなのでユーザの選択に任せるのが良いでしょう。

YettはJavaScript製のオープンソース・ソフトウェア(MIT License)です。

Yett Demo snipsco/yett: A small webpage library to control the execution of (third party) scripts