您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
DMM・FANZAの通販商品一覧からアウトレット、限定版、および BOD/DOD を除去
当前为
/* jshint esversion: 6 */ // ==UserScript== // @name filterSuperfluousOnDMM // @namespace https://greasyfork.org/ja/users/289387-unagionunagi // @version 0.8 // @description DMM・FANZAの通販商品一覧からアウトレット、限定版、および BOD/DOD を除去 // @author unagiOnUnagi // @include /^https?://\w+\.dmm\.co(m|\.jp)/mono/(\w+/)?-/(list|search)/.*/ // @grant none // @license GPL-2.0-or-later // ==/UserScript== function addStylesheet() { // カスタムスタイルシート .superfluous {display: none !important} を追加 let styleEl = document.createElement('style'); styleEl.setAttribute('id', 'unagionunagi-filtersuperfluousondmm-css'); document.head.appendChild(styleEl); let styleSheet = styleEl.sheet; styleSheet.insertRule('.superfluous {display: none !important}'); } function toggleFilter(ev) { // チェックボックスの状態を見て表示・非表示を切り換え let rule = document.getElementById("unagionunagi-filtersuperfluousondmm-css").sheet.rules[0]; let value = /\/view=text\//.test(document.URL) ? "table-row" : "list-item"; rule.style.display = ev.target.checked ? "none" : value; } function filterSuperflouous(lineup, itemElm, getTitle) { // アウトレット、限定版、BOD/DOD を非表示に // カスタムスタイルシートの追加 addStylesheet(); // 対象文字列正規表現 const pattern = [/^【(特選)?アウトレット】/, /^【(DMM|FANZA|数量)限定】/, /([BD]OD)$/, /アウトレット(BD)?】$/] let nof = 0; let items = document.evaluate(itemElm, lineup, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); let itemsLength = items.snapshotLength; for (let i=0; i < itemsLength; i++) { let item = items.snapshotItem(i) let title = getTitle(item); if (pattern.some(re => re.test(title))) { item.classList.add('superfluous'); nof += 1; } } let nod = document.querySelector('.number .current').textContent.trim(); if (nod == nof) { // ページ内全作品がフィルターされていたらその旨表示 lineup.insertAdjacentHTML('afterbegin', '<b>ページ内の全作品がフィルターされています。(filterSuperfluousOnDMM)</b>'); } // フィルターチェックボックス let lastSpan = document.querySelectorAll('.d-area .list-capt .list-boxseparate div.list-unit'); if (lastSpan.length) { lastSpan = lastSpan[lastSpan.length - 1]; let indicator = `<span id="unagionunagi-filtersuperfluousondmm" ` + ` title="アウトレット、限定版、BOD/DOD を非表示にします (このページに ${nof} 個)" ` + ` style="margin-left: 10px">` + `<input type="checkbox" id="unagionunagi-filtersuperfluousondmm-cb" ` + ` name="unagionunagi-filtersuperfluousondmm-cb" checked/>` + `<label for="unagionunagi-filtersuperfluousondmm-cb">フィルター</label></span>`; lastSpan.insertAdjacentHTML('afterend', indicator); let filterCb = document.getElementById('unagionunagi-filtersuperfluousondmm-cb'); filterCb.addEventListener('change', toggleFilter); } else { console.log('Breadcrumb list not found'); } } (function() { 'use strict'; let lineup; if ((lineup = document.getElementById('list'))) { // 画像形式表示 filterSuperflouous( lineup, 'li', (item) => item.querySelector('div p.tmb a span img').getAttribute('alt')); } else if ((lineup = document.querySelector('table[summary=商品一覧] tbody'))) { // テキスト形式表示 filterSuperflouous( lineup, 'tr[td]', (item) => item.querySelector('td p.ttl a').text.trim()); } })();