はてな市民にもなったことだし、群衆の叡智を使ってみる
windowsでfirefox3.0系
radio-iのトップページにある曲目検索の上に透明な画像を重ねて、新しいタブで開くようにするgreasemonkeyをつくった。
でもなぜか、一度リロードしないと期待する動作(曲目検索のページへのリンク)をしてくれない。
曲目検索のflash
問題のソースコード
// ==UserScript== // @name radio_i_flash_mask // @namespace http://d.hatena.ne.jp/Cherenkov/ // @include http://www.radio-i.co.jp/* // ==/UserScript== function flashMask(flash_id,embed_number,type){ var link = document.createElement('a'); link.href ='http://www.radio-i.co.jp/NOAView/cgi-bin/NOAData.Now?id=0469'; var img = document.createElement('img'); img.style.position = 'absolute'; img.style.zIndex = 1000; //意味なさそう img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABnRSTlMA%2FwD%2FAP83WBt9AAAADElEQVR4nGP4%2F%2F8%2FAAX%2BAv4N70a4AAAAAElFTkSuQmCC'; img.width = flash_id=='nowPlayTop' ? 297 : 160; img.height = flash_id=='nowPlayTop' ? 95 : 127; link.appendChild(img); document.getElementsByTagName('embed')[embed_number].setAttribute('wmode','transparent'); var nowPlay = document.getElementById(flash_id); nowPlay.insertBefore(link,nowPlay.firstChild); } //top page if(location.href=='http://www.radio-i.co.jp/'||location.href=='http://www.radio-i.co.jp/index.php'){ flashMask('nowPlayTop',2); }
インストール
この現象を再現するには
上のradioi_flash_mask.user.jsをインストールしたあと、新しいタブで開いたばかりのradio-iのトップページで起きます。リンクに飛んで戻るを押して戻ってきたり、リロードをすると、透明な画像が被さってちゃんと機能するようになる。問題の現象に戻すには一度タブを閉じて、新しいタブに開きなおしてください。
なんでだろう
- このflash自体は、load_swf("swf/topticker.swf",297,95);で呼び出されてて非同期に表示されてて、greasemonkeyの実行よりも遅いから透明処理が適応されない?とかおもったけど、ちゃんとembedタグ内にはtransparentセットされてるしなぁ。
- aタグの挿入位置の問題かとおもってずらしたり、上げたりもしてみたが関係ないのかなぁ。
オラに力を分けてくれ
解決策をお待ちしております。