ニコニコ動画のヘッダーにマイページとランキングを付けます
< Feedback on ニコニコ動画のヘッダーにマイページとランキングを付けるスクリプト
質問の内容を実現する場合最も簡単なのはurlを取得してそのurlから必要な文字列を取得、その後取得した文字列と静画のurlの文字列を合体させる必要があります。
結論から書きますと下のスクリプトで変数seigaurlに必要なurlが格納されます。
var url = location.href;
var url_s = url.split("/");
var citrus1 = url_s.slice(4,5);
var seigaurl = "https://seiga.nicovideo.jp/user/illust/" + citrus1;
左辺はvar 〇〇で変数〇〇を表していて=で右辺の内容を左辺に格納しています。
この変数seigaurlを使うときはnewElement2.setAttribute("href",seigaurl);というようにすればいいです。
一つひとつ解説しますと
・var url = location.href; でまず開いているページのURLを変数urlに取得します。
・var url_s = url.split("/"); は右辺において、urlの変数にsplit()の関数を適応しています。
split()は()内にある文字で適応した変数の文字列を分解します。""で挟むと文字列として認識されます。
https://www.nicovideo.jp/user/@ というurlの場合{https:,,www.nicovideo.jp,user,@}というように,で分けたように分解されます。
・var citrus1 = url_s.slice(4,5); ではslice()を使って分けた文字列から必要な文字列を変数citrus1に格納しています。
slice()の()内の4は前から何番目の文字列から取得をするか表しています(0が一番最初なので前から5番目)。
slice()の()内の5は前から何番目で取得を終わるかを表しています。このとき指定された番号は取得されません。
つまり5番目の文字列の@だけを取得しています。
・var seigaurl = "https://seiga.nicovideo.jp/user/illust/" + citrus1; でurlを合体させて目的のurlの文字列を変数seigaurlに格納しています。
ちなみにこのまま使ってもいいのですが、https://www.nicovideo.jp/user/@というようなurlのページ以外で開くとエラーページに飛びますのでそのあたりを気にする場合if文などで条件付けをする必要があります。
if文を使う場合、今回はslice()で分解したurlからuserの文字列を取得してそれが一致するときとしないときで条件付をすればうまくいくと思われます。
左辺と右辺の比較をする場合は==もしくは===で式を書けば比較ができます。=ではダメです。==と===の違いは割愛します。
if文は if(条件){条件を満たした場合の動作}else{条件を満たさない場合の動作} です。
以上を踏まえた場合例えばスクリプト内の
var newElement2 = document.createElement("a");
var newContent2 = document.createTextNode("動画投稿");
newElement2.appendChild(newContent2);
newElement2.setAttribute("class","common-header-g0o5vq");
newElement2.setAttribute("href","https://www.upload.nicovideo.jp/upload");
newElement2.setAttribute("style", "position: relative!important; display: block!important; width: 62px!important; height: 36px!important;left: 0px!important;z-index: auto!important;margin-top: 0px!important; padding: 0px 6px!important;color:#ffffff;");
の記述を
var newElement2 = document.createElement("a");
newElement2.setAttribute("class","common-header-g0o5vq");
newElement2.setAttribute("style", "position: relative!important; display: block!important; width: auto!important; height: 36px!important;left: 0px!important;z-index: auto!important;margin-top: 0px!important; padding: 0px 6px!important;color:#ffffff;");
var url = location.href;
var url_s = url.split("/");
var citrus = url_s.slice(3,4);
if (citrus == "user"){
var newContent2 = document.createTextNode("静画ページ");
newElement2.appendChild(newContent2);
var citrus1 = url_s.slice(4,5);
var seigaurl = "https://seiga.nicovideo.jp/user/illust/" + citrus1;
newElement2.setAttribute("href",seigaurl);
}else{
var newContent2_1 = document.createTextNode("動画投稿");
newElement2.appendChild(newContent2_1);
newElement2.setAttribute("href","https://www.upload.nicovideo.jp/upload");
}
に書き換えるとhttps://www.nicovideo.jp/user/@のurlでは静画ページのボタンが、それ以外のurlでは動画投稿のボタンが表示されるようになります。
これで説明は終わりです。長文大変失礼いたしました。
静画で質問したものです。よろしくおねがいします