以下の機能がSafari 9.0から追加されるそうです。
ホヤホヤ情報なのとざーっくり訳なので、間違ってたらごめんなさい!
Secure Extension Distribution
OS XのSafariの機能拡張が、すべてAppleでホストされるようになって(Safari Extensions Galleryっていうらしい)、より安全に使えるようになります。
Safari Extensions Galleryで公開された拡張は自動アップデートされて、
以下の2行を拡張のマニフェストに追加することでその恩恵が得られるとのこと。
<key>Update From Gallery</key> <true/>
Safari Extensions Galleryに置かず、独自に拡張を公開することも引き続き可能だが、そっちは自動アップデート対象外。
ただし、Safari Extensions Galleryに作った拡張を再度アップロードする必要はあって、ココからやれよとのこと。
使ったことないのであんまりありがたみがないですねー。
Force Touch Trackpad Mouse Events
新しいマウスイベントでwebkitForceってのが増える。
トラックパッドの感圧タッチ系のイベント。
感圧タッチ?フォースタッチ?について詳細は以下リンクより。
- event.webkitForce
- webkitmouseforcewillbegin
- webkitmouseforcedown
- webkitmouseforceup
- webkitmouseforcechanged
- MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN
- MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN
これらを組み合わせて使うことで、トラックパッドのイベントを拾えるらしい。
ちなみに
さっきの参考リンク先に書いてあるコードを抜粋。
function getEventData(ev) { // そもそも対応してるかチェック if ('webkitForce' in ev) { // 比較用の押し具合たち var forceLevel = ev['webkitForce']; var clickForce = MouseEvent.WEBKIT_FORCE_AT_MOUSE_DOWN; var forceClickForce = MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN; if (forceLevel >= clickForce && forceLevel < forceClickForce) // 普通のクリック } else if (forceLevel >= forceClickForce) { // トラックパッドなクリック } } }
うーん、使うのかコレは!
Content Blocking Safari Extensions
iOS
iOSのSafariに、Content Blocking Safari Extensionsってのが追加されます。
以下のようなtrigger/actionの配列を書いたJSONを追加することで、柔軟にあれこれ不要なコンテンツをブロックできるとのこと。
Safariはこれをパースしてバイトコードとして効率的に使うので、ユーザーの邪魔にはならないと。
以下の例では、webkit.orgで画像をブロックするようにしてる。
[ { "action": { "type": "block" }, "trigger": { "url-filter": "webkit.org/images/icon-gold.png" } }, { "action": { "selector": "a[href^=\"http://nightly.webkit.org/\"]", "type": "css-display-none" }, "trigger": { "url-filter": ".*" } } ]
"webkit.org/images/icon-gold.png"はブロックして、
"http://nightly.webkit.org"配下に向いたaタグをdisplay: noneにしてる感じ?
これすごい嫌な予感するのは私だけでしょうか。
HTML5 Media
AirPlay
Safari 9.0からは、JavaScriptからAirPlayが操れるように!
"WebKitPlaybackTargetAvailabilityEvent"を使ってAirPlayが利用可能かを判断します。
if (window.WebKitPlaybackTargetAvailabilityEvent) { video.addEventListener('webkitplaybacktargetavailabilitychanged', function(ev) { switch (ev.availability) { // 使えるとき case "available": // ... break; // 使えないとき case "not-available"