您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Easily search dells DFO listings by filtering information.
// ==UserScript== // @name Dell DFO Search // @namespace http://tampermonkey.net/ // @version 0.2 // @description Easily search dells DFO listings by filtering information. // @author Lauchlan Irwin // @match http://www1.ap.dell.com/content/topics/segtopic.aspx/products/quickship/* // @grant none // ==/UserScript== GLOBAL_DEBUG = false; GLOBAL_SEARCH_TERMS = undefined; GLOBAL_ROWS = undefined; //Custom debug function to allow toggling of console logs from debug = { log: GLOBAL_DEBUG == true ? function (string) { console.log(string); } : function () { }, error: GLOBAL_DEBUG == true ? function (string) { console.error(string); } : function () { }, assert: GLOBAL_DEBUG == true ? function (string) { console.assert(string); } : function () { } }; (function () { GLOBAL_SEARCH_TERMS = []; GLOBAL_ROWS = getRows(); //Add search bar var firstRow = GLOBAL_ROWS[0]; if (!firstRow) return; var searchBar = firstRow.cloneNode(true); searchBar.id = "searchBar"; for (var i = 0; i < searchBar.children.length; i++) { var column = searchBar.children[i]; column.innerHTML = ""; var input = document.createElement("input"); input.id = "input" + i; input.columnNumber = i; input.onchange = function (e) { search(e.target.columnNumber); }; GLOBAL_SEARCH_TERMS.push([]); column.appendChild(input); } firstRow.parentElement.insertBefore(searchBar, firstRow); console.log(firstRow.parentElement); console.log(firstRow); return; }()); function getRows(numberOfRows) { var temp = []; var tableRows = document.getElementsByTagName("tr"); for (var el in tableRows) { el = tableRows[el]; if (el.children) { if (el.children.length > 1) { if (el.children[0].classList.contains("gridCell") || el.children[0].classList.contains("gridCellAlt")) { temp.push(el); if (numberOfRows == temp.length) { return temp; } } } } } return temp; } function getSearchTerms(colNumber) { var input = document.getElementById("input" + colNumber); GLOBAL_SEARCH_TERMS[colNumber] = []; var individualTerms = input.value.match(/\w(\s?(?:\w))*/g); if (individualTerms) { for (var singleTerm in individualTerms) { GLOBAL_SEARCH_TERMS[colNumber].push(individualTerms[singleTerm]); } } else { GLOBAL_SEARCH_TERMS[colNumber] = []; } debug.log(GLOBAL_SEARCH_TERMS); } function search(columnUpdated) { getSearchTerms(columnUpdated); for (var i = 0; i < GLOBAL_ROWS.length; i++) { debug.log(""); var row = GLOBAL_ROWS[i]; if (row.id == "searchBar") continue; //Skip if row is searchBar if (!row.children) continue; //Skip if no children property var rowPassed = true; var columns = row.children; for (var j = 0; j < columns.length; j++) { var column = columns[j]; var columnPassed = true; var text = column.innerHTML; text = text ? text.toLowerCase() : ""; var searchTerms = GLOBAL_SEARCH_TERMS[j]; //if nothing to search => search passes automatically if (!searchTerms) { debug.log("Column PASSED: (no searchTerms) -> " + text); columnPassed = true; continue; } else if (searchTerms.length == 0) { debug.log("Column PASSED: (no searchTerms) -> " + text); columnPassed = true; continue; } var singleTerm = ""; for (var n = 0; n < searchTerms.length; n++) { singleTerm = searchTerms[n]; if (!text.includes(singleTerm.toLowerCase())) { debug.log("Column FAILED: (" + singleTerm + ") -> " + text); columnPassed = false; break; } } if (!columnPassed) { rowPassed = false; break; }else{ debug.log("Column PASSED: (" + document.getElementById("input"+columnUpdated).value + ") -> " + text); } } row.style.display = rowPassed ? "table-row" : "none"; debug.log(rowPassed ? " <<Row passed!>> " : " ##Row failed## "); debug.log(""); debug.log(""); } }