Yahoo!Japanの検索オプション「タイトルと商品説明」を復活させる
// ==UserScript==
// @id Yahoo!Japan_AuctionSearch
// @name Yahoo!Japan Auction「タイトルと商品説明」検索復元script
// @version 1.13
// @copyright Noi & Noisys & NoiSystem & NoiProject
// @license https://creativecommons.org/licenses/by-nc-sa/3.0/
// @author noi
// @description Yahoo!Japanの検索オプション「タイトルと商品説明」を復活させる
// @include http://auctions.search.yahoo.co.jp/search*
// @include http://auctions.yahoo.co.jp/search*
// @include https://auctions.yahoo.co.jp/search*
// @include http://category.auctions.yahoo.co.jp/list/*
// @include https://auctions.yahoo.co.jp/category/list/*
// @namespace https://greasyfork.org/scripts/2204
// @homepageURL https://greasyfork.org/scripts/2204
// @run-at document-end
// ==/UserScript==
/*=====================================================================================================================
**************************************************************
*************** Caution! [Yahoo!Japan] Only.*****************
**************************************************************
このスクリプトはヤフオクがかつて表示していた「タイトルと商品説明」を復活させるためのスクリプトです。
オークションの検索ページの左側にあるオプションにチェックボックスが復活します。
このスクリプトに関して、すべてにおいて自己責任にてご使用下さい。
※なお、万が一Yahoo!Japanより公開停止要請があった場合、即公開中止いたしますのでご了承下さい。
その場合、ご利用を中止してください。
※2014年09月の変更により、「タイトルと商品説明」と「あいまい検索」は排他になりました。
両方有効にしても表示上は「タイトルと商品説明」となります。(両方効いているのか、表示通りなのかは不明)
=====================================================================================================================*/
/********************************************************************************************************************
更新履歴
2017/11/30 - v1.13 fix:仕様変更対応
2016/09/11 - v1.12 fix:include URL
2016/03/04 - v1.11 add:「コンビニ受け取り」追加
2014/09/07 - v1.10 fix:yahooの仕様変更に対応(選択制の旧スタイルに戻す)
2014/06/13 - v1.9 del:@updateURL
2014/06/12 - v1.8 add:@homepageURL
2014/06/07 - v1.7 change: namespace & updateURL
2014/05/05 - v1.6 add:include URL (http://category.auctions.yahoo.co.jp)
2013/02/12 - v1.5 fix:yahooのレイアウトの変更に対応。多少の変更に左右されないように修正
2013/01/29 - v1.4 add:check update
2013/01/18 - v1.3 add:aimai search and fix(「あいまい検索」追加とチェックボタン連動機能追加)
2013/01/07 - v1.2 change:simplified source code(プログラムソースの簡素化)
2012/12/02 - v1.1 fix:(ページによって追記場所がずれるため修正)
2012/11/29 - v1.0 release
********************************************************************************************************************
備忘録
・「タイトルと商品説明」で検索すると、URLの引数に「?f=0x4」付く
ただし、だからといって単純に「?f=0x4」だけ追記しても表示が変わらないので他にもファクターがあると思われる?
「タイトル」検索に戻す場合は「?f=0x2」もしくは(ヤフオク仕様変更により)削除でも可
「あいまい検索」は「?ngram=1」
「新着」は「new=1」
「送料無料」は「pstagefree=1」
「値下げ交渉」は「offer=1」
http://auctions.search.yahoo.co.jp/search?ei=UTF-8&p=「検索文字列」&auccat=「カテゴリーID」
http://category.auctions.yahoo.co.jp/list/「カテゴリーID」/
タイトルと商品説明 '<li><input type="checkbox" name="f" id="ni03" class="cb" value="0x4"><label for="ni03">タイトルと商品説明</label></li>';
あいまい検索 '<li><input type="checkbox" name="ngram" id="ni04" class="cb" value="1"><label for="ni04">あいまい検索</label></li>';
コンビニ受け取り &shipping=111
・以下廃止
https://www.userscripts.org/scripts/show/153206
https://userscripts.org/scripts/source/153206.user.js
・@updateURLを削除(インストールしたときのサイトURLをアドオンが保持しているので更新可能な模様)
********************************************************************************************************************/
(function(){
//変数・定数---------------------------------------------------------------------------------
//共通
var href = window.location.search; //現在のURL
var objId = document.getElementById('S_Items'); //オプション欄
var objTarget = objId.getElementsByTagName('ul')[0]; //追加する場所
var hiddenElm = ""; //検索オプションをつけるとhiddenで追加される要素
var objUL = document.createElement('ul'); //大本の入れ物
objUL.id = "YJAS_DATA";
//alert(objId.innerHTML); //テスト用
//alert(objTarget.innerHTML); //テスト用
//関数----------------------------------------------------------------------------------------
//yahooの使いづらい部分削除
objTarget.innerHTML = "";
//「新着」
addHtml("ni00","new=1","新着");
//「送料無料」
addHtml("ni01","pstagefree=1","送料無料");
//「値下げ交渉」
addHtml("ni02","offer=1","値下げ交渉");
//「コンビニ受け取り」
addHtml("ni03","shipping=111","コンビニ受け取り");
//「タイトルと商品説明」
addHtml("ni04","f=0x4","タイトルと商品説明");
//「あいまい検索」
addHtml("ni05","ngram=1","あいまい検索");
//「絞り込む」ボタン
objUL.insertAdjacentHTML("beforeend", '<input type="button" class="b" value="絞り込む" />');
//「絞り込む」ボタンのクリックイベントを監視
objUL.getElementsByClassName("b")[0].addEventListener('click', function(){change()}, true);
//オブジェクト追加
objTarget.appendChild(objUL);
//解除ボタン
var reset = objTarget.parentNode.parentNode.getElementsByClassName("dvCancel")[0];
var urlTmp = href.replace(/&(new=1|pstagefree=1|offer=1|f=0x4|ngram=1)/g,"");
if(!reset && href != urlTmp){
var objTmp = objTarget.parentNode.parentNode.getElementsByClassName("t cf")[0]; //解除ボタンのタイトルバーの見た目変更
objTmp.setAttribute("class","t cf exChecked"); //クラス変更でCSSが適応される
objTmp.insertAdjacentHTML("beforeend", '<div class="dvCancel"><></div>');
reset = objTarget.parentNode.parentNode.getElementsByClassName("dvCancel")[0];
}
if(reset) reset.innerHTML = '<a href="' + urlTmp + '">解除</a>'
//HTMLタグ生成
function addHtml(id,param,txt){
var strChecked = "";
var regCheck = new RegExp('(\\?|&)' + param);
var objLI = document.createElement('li'); //チェックボックスボックスの入れ物
var objBox = document.createElement('input'); //チェックボックス
//オプションが有効だったらチェックボックスにチェックを入れる
if(window.location.search.match(regCheck)) strChecked = " checked";
var html = '<li><input type="checkbox" id="' + id + '"'
+ strChecked
+ ' class="cb" value="&' + param + '">'
+ '<label for="' + id + '">' + txt
+ '</label></li>'
;//ここまで
objUL.insertAdjacentHTML("beforeend", html);
}
//検索オプション変更
function change(){
var data = document.getElementById("YJAS_DATA");
var newUrl = href;
var objInputs = data.getElementsByTagName("input");
for(var i=0; i < objInputs.length;i++){
if(objInputs[i].type != "checkbox") continue;
if(objInputs[i].checked){ if(!href.match(objInputs[i].value)) newUrl += objInputs[i].value;
}else{ newUrl = newUrl.replace(objInputs[i].value,"");}
}
if(href != newUrl) location.href = newUrl;
}
})();
//=====================================================================================================================