我已經創建瞭如下的Greasemonkey腳本的Firefox幫助在Java API reference一長串過濾器類名稱:元素與顯示器設置爲none顯示
// ==UserScript==
// @name JDK API Doc helper problematic
// @version 1
// @namespace Xolve
// @description Provides in place search for JDK API docs
// @include http://docs.oracle.com/javase/7/docs/api/*
// @run-at document-end
// ==/UserScript==
var classNamesFrame;
var classNamesDoc;
var classNamesHash = {};
var timeoutId;
function textBoxTextChanged(ev)
{
window.clearTimeout(timeoutId);
console.log(ev.target.value);
// For case insensitive comparision
var query = String(ev.target.value).trim().toLowerCase();
timeoutId = window.setTimeout(filterClassNames, 600, query);
}
function filterClassNames(query)
{
if(query.length == 0) {
for(k in classNamesHash) {
classNamesHash[k].style.display = "";
}
return;
}
for(k in classNamesHash) {
if(k.startsWith(query)) {
console.log("setting to display: " + k);
classNamesHash[k].style.display = "block";
}
else {
classNamesHash[k].style.display = "none";
}
}
}
function init()
{
// Find list of class names
classNamesDoc = classNamesFrame.contentDocument;
classNamesATags = classNamesDoc.getElementsByTagName("a");
for(i = 0; i < classNamesATags.length; i++) {
// For case insensitive comparision
classNamesHash[classNamesATags[i].textContent.toLowerCase()] = classNamesATags[i];
}
// Add a text box
var textBox = classNamesDoc.createElement("input");
var body = classNamesDoc.getElementsByTagName("body")[0];
var classListNode = body.getElementsByClassName("indexContainer")[0];
body.insertBefore(textBox, classListNode);
textBox.addEventListener("keyup", textBoxTextChanged);
}
classNamesFrame = document.getElementsByName("packageFrame")[0];
classNamesFrame.onload = init;
這是這個腳本的作用
將文本框添加到列出類名稱的框架中。呼叫是查詢框。
創建所有類名(轉換爲小寫)到相應DOM元素的散列。
當用戶在查詢框中輸入類名的前幾個字符時,它循環遍歷哈希鍵,並將匹配元素的顯示屬性設置爲「block」並將不匹配元素的屬性顯示爲「none」
問題
一些元件總是顯示例如AclEntry,Array等,不管查詢框的內容如何,
已驗證;加上1. –
編輯答案使其看起來不那麼嘗試,因爲它是正確的,我想知道爲什麼OP沒有看到。如果你不喜歡這個改變,請將它捲起來。 –
謝謝!一些非常明顯的和非常簡單的解決方法。 – Xolve