忍者ブログ
肉屋の仕事、ときどき趣味の日々
■カテゴリ:プログラム プラグイン ニコニコ動画
×

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

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

※ 冒頭の定義文の修正箇所が抜けていることを指摘されて修正しました(11/23)
    (蛇足)初めて受けたトラックバックが問題点の指摘という情けなさ。
         それはともかくとして、この記事のトラックバック先で
         より最適な修正案が出ているのでそちらもご参照ください。
PR
 二日前くらいにニコニコ動画のHTML構造が大幅に改編されたらしく、castor氏のseahorse版拡張マイリストがリストを表示してくれなくなってしまったので、ちょっと直してみました。以下が問題箇所と修正点。



【修正前】

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('table');
    for (var i=0; i<a.length; ++i) {
        if (a[i].getAttribute('summary', 2) == 'マイリスト') {
            var m = a[i];
            m.parentNode.insertBefore(div, m.nextSibling);
            break;
        }

    }

    updateTagSelectBox('mylist_select_tag', true); // Update tag select box
    updateList(); // Update List
    setReloadTimer(); // reload at regular intervals
}





【修正後】

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('td');
    for (var i=0; i<a.length; ++i) {
        if (a[i].innerHTML == 'マイリスト') {
            var m = a[i].parentNode.parentNode.parentNode.parentNode;
            m.parentNode.insertBefore(div, m.nextSibling);
            break;
        }

    }

    updateTagSelectBox('mylist_select_tag', true); // Update tag select box
    updateList(); // Update List
    setReloadTimer(); // reload at regular intervals
}




 問題点・変更点は赤字で強調してます。これだけのことなのに二日も掛かりました。大学時代から相変わらずjavaに馴染めずプログラム構造を把握するだけでも四苦八苦。まあ、今回の問題はニコニコ動画側に従来は存在した名前空間(というか注釈みたいなもの)が削除されてしまったために拡張マイリストの表示場所が特定できなかったことが原因でした。そこで新たに拡張マイリストを埋め込む場所を指定し直すことで見事解決。あ、ちなみにこの修正案を適用すると、拡張マイリストは通常のマイリストの上部に埋め込まれることになります。これは通常のマイリストを最早ほとんど使っていない僕にとってその方が使いやすいことと、ニコニコ自体のHTML構造がかなりdiv要素を多用した入れ子型になっているため、それに対応しようとするとソースコードを少し煮詰め直さなければならなくならず、そんな面倒なことはできないという理由からです。それでも良ければご活用ください。あと、今回の記事で言ってることが意味わかんねえようなら、まずはjavaを勉強してから今回使用されてるseahorseの構文をちょちょいと検索すればたぶんわかるようになるはずです。くれぐれも、コード修正前にマスターのコピーを退避しておくことを忘れずに。


 あ、ちなみに各動画画面に表示される登録ボタンの動作が正しく行われるかどうかは未確認です。そんなことより膨らみあがった俺の拡張マイリストを切り崩す方が先だぜ。



↓の評価ボタンを押してランキングをチェック!
素晴らしい すごい とても良い 良い



忍者ブログ [PR]
ブログ内検索
プロフィール
HN:
遠月 玲
年齢:
38
HP:
性別:
男性
誕生日:
1985/05/02
職業:
ぶっちゃー
趣味:
読書、創作、妄想
Web拍手
よろしかったらひとつ。
pixiv
カレンダー
03 2024/04 05
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

バーコード
アクセス解析