YouTubeやニコニコ動画のFlashにフォーカスを合わせた状態でホイールスクロールが可能になるグリモン

Windowsユーザ限定の不具合に対処するエントリー。Firefox2だと問題無いのになー。

// ==UserScript==
// @name           FlashWmode
// @namespace      http://d.hatena.ne.jp/Cherenkov/
// @description    http://userscripts.org/topics/3090
// @include        http*
// ==/UserScript==

(function(){
var ems = document.getElementsByTagName('embed');
for (var i=0; i < ems.length; i++) {
  var em = ems[i];
  if ((em.getAttribute('wmode') == null) && (em.getAttribute('type') == "application/x-shockwave-flash")) {
    var ep = em.parentNode;
    if(ep.tagName.toLowerCase() == 'object') {
      var prs = ep.getElementsByTagName('param');
      for(var j=0; j < prs.length; j++) {
        if(prs[j].name == 'wmode') {
          return;
        }
      }
      em.setAttribute('wmode', 'opaque');
      ep.insertBefore(em, em.nextSibling);
    }
    else{
      em.setAttribute('wmode', 'opaque');
      ep.insertBefore(em, em.nextSibling);
    }
  }
}
})();

wmodeを適用することによってスクロールが可能になる→wmodeを動的に設定する方法

displayをnone/blockすると、Flashの配置がずれるサイトがあったのでinsertBeforeにした。

インストール

FlashWmode.user.js - userscripts.org

更新履歴

2009年4月11日 - objectタグが存在して既にwmodeが設定されていると表示されないものがあったので条件を加えた。

注意

id:javascripterNicoVideoAutoPlayなどをインストールしてある場合は「ユーザースクリプトの管理」でこのスクリプトを先に実行されるようにしておくこと。

このスクリプトによって発生する不具合

ニコニコ動画ustream

サーバーサイドの対策案

こちらのページの http://mfria.blog106.fc2.com/blog-entry-270.html 赤線の部分を実装するとよくなるのかな?ニコニコの中の人(id:koizuka)は当然検討したことがあると思うのでご意見を聞きたい。

感想

不具合が出ないかしばらく観察してみる。
やっぱ「displayをnone/block」だと表示されなくなるページあるな。
transparentとopaqueで影響が少ないのはどっちだろう。