Greasy Fork

Greasy Fork is available in English.

Yahoo!Japan Auction「タイトルと商品説明」検索復元script

Yahoo!Japanの検索オプション「タイトルと商品説明」を復活させる

当前为 2014-09-06 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @id             Yahoo!Japan_AuctionSearch
// @name           Yahoo!Japan Auction「タイトルと商品説明」検索復元script
// @version        1.10
// @copyright      Noi & Noisys & NoiSystem & NoiProject
// @license        https://creativecommons.org/licenses/by-nc-sa/3.0/
// @author         noi
// @description    Yahoo!Japanの検索オプション「タイトルと商品説明」を復活させる
// @include        /^https?:\/\/auctions.search.yahoo.co.jp\/search\?*/
// @include        /^https?:\/\/category.auctions.yahoo.co.jp\/list\/*/
// @namespace      http://greasyfork.icu/scripts/2204
// @homepageURL    http://greasyfork.icu/scripts/2204
// @run-at         document-end
// ==/UserScript==
/*=====================================================================================================================
**************************************************************
*************** Caution!  [Yahoo!Japan] Only.*****************
**************************************************************


このスクリプトはヤフオクがかつて表示していた「タイトルと商品説明」を復活させるためのスクリプトです。
「あいまい検索」ボタンも追加しました。

このスクリプトに関して、すべてにおいて自己責任にてご使用下さい。

なお、万が一Yahoo!Japanより公開停止要請があった場合、即刻公開中止いたしますのでご了承下さい。
その場合、ご利用を中止してください。

2014年09月の変更により、「タイトルと商品説明」と「あいまい検索」は排他になりました。
両方有効にしても表示上は「タイトルと商品説明」となります。(両方効いているのか、表示通りなのかは不明)

=====================================================================================================================*/

/********************************************************************************************************************
更新履歴

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>';

・以下廃止
  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","f=0x4","タイトルと商品説明");

	//「あいまい検索」
	addHtml("ni04","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];
	}
	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;
	}



})();
//=====================================================================================================================