素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

Flash 10でもFlash 9を名乗る

Flash 10 でも「はてなダイアリー」の「バックアップ機能」を使えるようにするグリースモンキー - IT戦記を見て、ユーザーエージェントを切り替えるように、Flashのバージョンも嘘を付けるようにできるといいと思った。
Firefoxだと、

navigator.plugins['Shockwave Flash'].__defineGetter__('description', function () {
  return 'Shockwave Flash 9.0 r151';
});

とすればいい。
Safari(WebKit)だと、

navigator.plugins['Shockwave Flash'] !== navigator.plugins['Shockwave Flash'];

なので、上の方法はうまくいかない。

var navigator_ = window.navigator;
var Navigator = function () {
  var Plugins = function () {
    var ShockwaveFlash = function () {
      this.description = 'Shockwave Flash 9.0 r151';
    };
    ShockwaveFlash.prototype = navigator_.plugins['Shockwave Flash'];
    this['Shockwave Flash'] = new ShockwaveFlash();
  };
  Plugins.prototype = navigator_.plugins;
  this.plugins = new Plugins();
};
Navigator.prototype = window.navigator;
window.navigator = new Navigator();

とすればよい。
どっちにしろ問題の箇所はもう修正されたようなので、必要ない。