忍者ブログ
肉屋の仕事、ときどき趣味の日々
[90] [89] [88] [87] [86] [85] [84] [83] [82] [81] [80]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

 ニコニコ動画が9にバージョンアップしたことに伴い今回もcastor氏のseahorse版拡張マイリストがリストを表示してくれないどころか、ついに登録ボタンまでも消失してしまったため、またもや急遽自力で修正することに。

※ 冒頭の定義文の修正箇所が抜けていることを指摘されて修正しました(11/23)
    (蛇足)初めて受けたトラックバックが問題点の指摘という情けなさ。
         それはともかくとして、この記事のトラックバック先で
         より最適な修正案が出ているのでそちらもご参照ください。


【修正前】

// ==UserScript==
// @name NicoVideo Additional MyList (for SeaHorse)
// @namespace http://castor.s26.xrea.com/
// @description Save the movie list to local settings.
// @include http://www.nicovideo.jp/watch/*
// @include http://www.nicovideo.jp/my/my
// @type SleipnirScript
// @version 0.9.6.20081214sh
// @author castor
// ==/UserScript==

  -----------------------------------------------------
             (中略)
  -----------------------------------------------------

  function screenWatch() {
    var mylist_add_submit = document.getElementById('mylist_add_submit');
    if (mylist_add_submit) {
        var input = document.createElement('input');
        input.className = 'submit';
        input.setAttribute('id', 'mylist_add_button_add');
        input.setAttribute('type', 'button');
        input.setAttribute('value', '拡張リストに登録');
        input.style.cssText = 'margin-left:4px;';
        input.attachEvent('onclick', addMyList);

        if (!document.getElementById('mylist_add_button_add')) {
            mylist_add_submit.parentNode.appendChild(input);
            mylist_add_submit.parentNode.style.cssText = 'white-space:nowrap;';
        }

    }
  -----------------------------------------------------
             (中略)
  -----------------------------------------------------

  function screenMylist() {
    // Additional List (Header)
    var div = document.createElement('div');

    div.setAttribute('id', 'mylist_additional');
    div.setAttribute('width', '100%');
    div.appendChild(makeListHeader()); // header
    div.appendChild(makeListSubHeader()); // sub-header
    div.appendChild(makeListBody()); // body

    var pos = 0;
    var a = document.getElementsByTagName('div');
    for (var i=0; i
        if (a[i].getAttribute('className') == 'tool_tit_bg') {
            if (++pos == 2) {
                var m = a[i];
                m.parentNode.insertBefore(div, m);
                break;
            }

        }
    }
    /*
        (中略)
    /*

        (後略)
}





【修正後】

// ==UserScript==
// @name NicoVideo Additional MyList (for SeaHorse)
// @namespace http://castor.s26.xrea.com/
// @description Save the movie list to local settings.
// @include http://www.nicovideo.jp/watch/*
// @include http://www.nicovideo.jp/my/mylist
// @type SleipnirScript
// @version 0.9.6.20081214sh
// @author castor
// ==/UserScript==

  -----------------------------------------------------
             (中略)
  -----------------------------------------------------

  function screenWatch() {
    var mylist_add_submit = document.getElementById('BTN_add_deflist');
    if (mylist_add_submit) {
        var input = document.createElement('input');
        input.className = 'submit';
        input.setAttribute('id', 'mylist_add_button_add');
        input.setAttribute('type', 'button');
        input.setAttribute('value', '拡張リストに登録');
        input.style.cssText = 'margin-left:4px;';
        input.attachEvent('onclick', addMyList);

        if (!document.getElementById('mylist_add_button_add')) {
            mylist_add_submit.parentNode.insertBefore(input, null);
            mylist_add_submit.parentNode.style.cssText = 'white-space:nowrap;';
        }

    }

  -----------------------------------------------------
             (中略)
  -----------------------------------------------------

  function screenMylist() {
    // Additional List (Header)
    var div = document.createElement('div');

    div.setAttribute('id', 'mylist_additional');
    div.setAttribute('width', '100%');
    div.appendChild(makeListHeader()); // header
    div.appendChild(makeListSubHeader()); // sub-header
    div.appendChild(makeListBody()); // body

    (削除)
    var a = document.getElementsByTagName('div');
    for (var i=0; i
        for (var i=0; i
            if (a[i].className == 'alert_box') {
                var m = a[i];
                m.insertBefore(div, null);
                break;
            }

        }
    }
    /*
        (中略)
    /*

        (後略)
}




 問題点・変更点は赤字で強調してます。
 現状残る問題点は

  ・拡張マイリストのデザインの崩れ
  ・登録ボタンを押したときにバルーンが表示されない(ページ最下部に結果は出る)

 の二つなんですが、まあ動作さえすればとりあえずいいやってことで正式対応は本家をお待ちください。

 今回は誰か先にやってないかと思って検索してみたらニコニコユーザ掲示板でGreasemonkey版への対応が書き込まれていたので、それを参考にして前回よりはだいぶ楽に修正できました。前回の修正では試していなかったので気付かなかったんですが、動画視聴ページではソースコードの表示が不許可になっているらしく、DLして開いてみても文字化けの嵐でidの特定に手間取っていたんですが、先の掲示板にあった修正案に挿入ターゲットのidが記載されていたので、それで事なきを得ました。あれがなかったら死んでいたぜ。
 あ、ちなみに今回もこの修正案を適用すると、拡張マイリストはとりあえずマイリストの上部に埋め込まれることになります。これは通常のマイリストを最早ほとんど使っていない僕にとってその方が使いやすいことと、ニコニコ自体のHTML構造がかなりdiv要素を多用した入れ子型になっているため、それに対応しようとするとソースコードを少し煮詰め直さなければならなくならず、そんな面倒なことはできないという理由からです。それでも良ければご活用ください。あと、今回の記事で言ってることが意味わかんねえようなら、まずはjavaを勉強してから今回使用されてるseahorseの構文をちょちょいと検索すればたぶんわかるようになるはずです。くれぐれも、コード修正前にマスターのコピーを退避しておくことを忘れずに。


PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
ブログ内検索
プロフィール
HN:
遠月 玲
年齢:
39
HP:
性別:
男性
誕生日:
1985/05/02
職業:
ぶっちゃー
趣味:
読書、創作、妄想
Web拍手
よろしかったらひとつ。
pixiv
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリー
現在熱中or注目物

book

anime

game

music

バーコード
アクセス解析