F.Ko-Jiの「一秒後は未来」

任意のページ上にテレビ番組表を表示するブックマークレット(Firefox限定)

たとえばネットでテレビ番組表を見たいと思ったときに、わざわざポータルサイトのテレビ番組表を別ウインドウや別タブで開くのってめんどくさいですよね?

そこで現在のページ上にiframeで重ねて現在のテレビ番組表を表示するブックマークレットを作ってみました。Firefox限定です。IEで動かないので・・・。

任意のページ上にテレビ番組表を表示するブックマークレット(Firefox限定)
(このリンクはRSSリーダーでは表示されない場合があります。)

任意のページ上にテレビ番組表を表示するブックマークレット(Firefox限定)

こんな風にlivedoor Readerの上にも表示できます。ちなみにテレビ番組欄まで自動スクロールはしません。URLに#mainSarchを付加するとちょこっとスクロールしてくれますが、Closeボタンが隠れたりするのでつけてません。(ちなみにmainSarchはtypoではありません。Yahoo!のhtmlソースがそうなってるだけです。)

iframe要素はdocument.lastChildにappendしているのでフレームを利用しているBloglines上にも表示できます。デフォルトは東京のYahoo!のテレビ番組表になってます。

まぁ表示するサイトはテレビ番組表に限らず、mixiとか自分がちょっとチェックしたいページにしておけば色々使えるので便利です。(以下のソースの太字部分を変えればいい。)

javascript:(function(){var%20y=document.body.scrollTop;var%20d=document.createElement("div");
with(d.style){textAlign="right";backgroundColor="#fff";width="100%";height="50%";position="absolute";
top=y;left=0;margin="auto";}var%20b=document.createElement("input");b.type="button";b.value="Close";
b.setAttribute("onclick","document.lastChild.removeChild(document.lastChild.lastChild)");
var%20i=document.createElement("iframe");i.src="http://tv.yahoo.co.jp/vhf/tokyo/realtime.html";
with(i.style){width="100%";height="90%";}d.appendChild(b);d.appendChild(i);document.lastChild.appendChild(d);})();

ところでどなたかIEで動くようにできますか?

  1. oshiro より:

    先に投稿させていただいたブックマークレットですが、top,leftの指定で5の箇所を”5px”などとしないと正しく動作しないページがありました。訂正します。すみません。

  2. F.Ko-Ji より:

    >>oshiroさま
    ありがとうございます。
    IEで動かないことなどすっかり忘れておりました。
    document.lastChildがよくないわけですね。。
    勉強になります!

    (横に長く表示されていたので改行を入れさせていただきました。)

  3. oshiro より:

    たびたびすみません。scrollTopの取得で、bodyではなく、documentElementが必要となるページがあるようで、他を参考に(document.body.scrollTop || document.documentElement.scrollTop)としてみました(これでだいたいOKかな?)。pxの単位指定も含んでいます。また、Closeボタンは強引にタグ書きしてたんですが、投稿時にその箇所が消えてしまっていたようです。16進表記にしてみました。改行追加お手数おかけしました。今回はこちらも入れてみています。

    javascript:var%20tvmap_func=function(){
    var%20d=document;var%20w=window;
    d.getElementById(‘tvmap’).style.top=
    (d.body.scrollTop||d.documentElement.scrollTop)+5+”px”};
    if(window.attachEvent){window.attachEvent(‘onscroll’,tvmap_func)}
    else{window.addEventListener(‘scroll’,tvmap_func,true)};
    (function(){var%20url=”http://tv.yahoo.co.jp/vhf/tokyo/realtime.html”;
    var%20d=document;var%20div=d.createElement(“div”);div.id=”tvmap”;
    with(div.style){backgroundColor=”#eee”;border=”solid%201px%20#aae”;
    filter=’alpha(opacity=95)’;opacity=.95;zIndex=”999″;
    position=”absolute”;textAlign=”right”;margin=”auto”;
    width=”95%”;height=”55%”;left=”5px”;
    top=(d.body.scrollTop||d.documentElement.scrollTop)+5+”px”}
    div.innerHTML+=”%3cinput%20type=\”button\”%20value=\”Close\”%20
    onClick=\”document.body.removeChild(document.getElementById(‘tvmap’));
    if(window.detachEvent){window.detachEvent(‘onscroll’,tvmap_func)}
    else{window.removeEventListener(‘scroll’,tvmap_func)};
    delete%20tvmap_func\”%3e”;
    var%20i=d.createElement(“iframe”);i.src=url;
    with(i.style){width=”100%”;height=”95%”}
    div.appendChild(i);d.body.appendChild(div)})()

  4. gatchan より:

    参考になります。
    私はボタンではなくBodyのクリックでremoveするようにしてみました。
    ソースはoshiro | 2008年05月23日 04:41さんのコードを拝借しました。
    javascript:var%20tvmap_func=function(){
    with(document.getElementById(‘tvmap’).style){
    top=(document.body.scrollTop||document.documentElement.scrollTop)+5}};
    var%20remove_func=function(evt){
    if(document.getElementById(‘tvmap’)&&evt.target.id!=”tvmap”){
    document.body.removeChild(document.getElementById(‘tvmap’));}};
    if(window.attachEvent){
    window.attachEvent(‘onscroll’,tvmap_func);
    window.attachEvent(‘onclick’,remove_func);}else{
    window.addEventListener(‘scroll’,tvmap_func,false);
    window.addEventListener(‘click’,remove_func,false);
    };(function(){var%20url=”http://tv.yahoo.co.jp/vhf/tokyo/realtime.html”;
    var%20d=document.createElement(“div”);
    d.id=”tvmap”;with(d.style){textAlign=”right”;
    backgroundColor=”#eee”;width=”95%”;height=”55%”;
    filter=’alpha(opacity=95)’;opacity=.95;
    position=”absolute”;
    top=(document.body.scrollTop||document.documentElement.scrollTop)+5+”px”;
    left=5+”px”;margin=”auto”;}d.innerHTML+=””;
    var%20i=document.createElement(“iframe”);i.src=url;
    with(i.style){width=”100%”;
    height=”95%”;}d.appendChild(i);
    document.body.appendChild(d);})()

    【F.Ko-Ji】 さん
    今回勉強になったし便利なので、ソースコードをそのままお借りして私のbolgでも記事としてエントリーさせてもらってもよろしいでしょうか?

  5. F.Ko-Ji より:

    > gatchanさん
    コメントありがとうございます。
    ソースコード掲載の件は全然問題ありません!
    どうぞお使いください。

  6. gatchan より:

    F.Ko-Ji】 さん
    コード掲載の件了解していただいてありがとうございます!

    今回の私のコードがブログの体裁を崩してしまってるのでヒューマンリーダブルなコード(適度に改行して)にして再投稿したほうがよいですか?

    まさかこういう形になるとは思ってなかったものですから^^;~>
    申し訳ありません・・・。

    いつでもおっしゃってください。ここしばらく見てますので;

  7. F.Ko-Ji より:

    Firefoxでは崩れてないですが他のブラウザで崩れてたりしますか?
    ちょっと明日確認してみますので大丈夫ですよー

  8. gatchan より:

    ありがとうございます。
    今回表示が崩れた(横スクロールバーが伸びる)ブラウザはChromeです。
    IE(7)とFirefox3は大丈夫でした。

    お手数です><; よろしくお願いします!

  9. F.Ko-Ji より:

    こちらで改行入れておきました。
    これで大丈夫ではないかと思います。

  10. gatchan より:

    対応ありがとうございます!

    早速私もブログにエントリーさせてもらいました。
    【「天気予報」の表示版】も載せましたので、よかったらみてみてください><; http://d.hatena.ne.jp/gatchan/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など