ひびのログ

日々ではないけどログを出力していくブログ

じゃらんの検索結果からプラン詳細を別タブで開くJavaScript

タイトルのとおりです。

動機

じゃらんから予約しようとして、プラン詳細を別タブで開こうと思ったときに、どうやっても同じタブで開かれてしまって「うがああああああ!!!!」と声を上げるのも今日まで。

ある雨の日、ある風の日。

そして今日。

悲しみと喉の不調をもたらす根源を断ち切るッ!

使い方

じゃらんで検索した後、ブックマークレットにしてクリックして実行する(推奨)か、F12のコンソールにコピペして実行する。

動作の保証はしません。

ライセンスはCC0なので、お好きに改変等OKです。

ソースコード

const _my_baseUrl = "http://www.jalan.net/uw/uwp3200/uww3201init.do";

const _my_screenId  = document.querySelector("input[name='screenId']").value;
const _my_distCd    = document.querySelector("input[name='distCd']").value;
const _my_rootCd    = document.querySelector("input[name='rootCd']").value;
const _my_stayYear  = document.querySelector("input[name='stayYear']").value;
const _my_stayMonth = document.querySelector("input[name='stayMonth']").value;
const _my_stayDay   = document.querySelector("input[name='stayDay']").value;
const _my_stayCount = document.querySelector("input[name='stayCount']").value;
const _my_roomCount = document.querySelector("input[name='roomCount']").value;
const _my_roomCrack = document.querySelector("input[name='roomCrack']").value;
const _my_smlCd     = document.querySelector("input[name='smlCd']").value;


const _my_planAnchors = document.querySelectorAll("div.search-result-cassette div.hotel-detail-plan table tr td a");
_my_planAnchors.forEach((elm) => {
    const _my_parsedHref = elm.href.match(/javascript:openPlanSyosaiStatic\('(.*)', *'(.*)', *'(.*)', *'(.*)'.*/i);
    const _my_yadNo           = _my_parsedHref[1];
    const _my_planCd          = _my_parsedHref[2];
    const _my_roomTypeCd      = _my_parsedHref[3];
    const _my_pageListNumPlan = _my_parsedHref[4];


    const _my_url = _my_baseUrl + "?" +
            "screenId="        + _my_screenId        + "&" +
            "distCd="          + _my_distCd          + "&" +
            "rootCd="          + _my_rootCd          + "&" +
            "stayYear="        + _my_stayYear        + "&" +
            "stayMonth="       + _my_stayMonth       + "&" +
            "stayDay="         + _my_stayDay         + "&" +
            "stayCount="       + _my_stayCount       + "&" +
            "roomCount="       + _my_roomCount       + "&" +
            "roomCrack="       + _my_roomCrack       + "&" +
            "smlCd="           + _my_smlCd           + "&" +
            "pageListNumPlan=" + _my_pageListNumPlan + "&" +
            "yadNo="           + _my_yadNo           + "&" +
            "planCd="          + _my_planCd          + "&" +
            "roomTypeCd="      + _my_roomTypeCd      + "&" +
            "callbackHistFlg=" + "1";

    elm.href   = _my_url;
    elm.target = "_blank";
});