Thread geschlossen.
Bitte postet alle Anfragen zu dieser Erweiterung im neuen Unterforum Anpassungen, welches extra für alle Arten von Schraubereien am Fuchs eingerichtet wurde.
________________________________________________
Abend Kameraden!
Hab mal für die Erweiterung paar Scripte mitgebracht:
Es gibt mtw. einen Hack zu dem "Uhrscript", dass ich hier http://www.firefox-browser.de/forum/viewtopi…p=309110#309110 seinerzeit mitbrachte, in dem man das Datum samt Uhr nicht in die Titlebar, sondern auch in die Statusbar des Fuchses reinpflanzen kann:
function Clock() {
var title = content.document.title;
var days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var D = new Date();
var day = days[D.getDay()];
var month = months[D.getMonth()];
var year = D.getFullYear();
var hours = D.getHours();
var min = D.getMinutes();
var sec = D.getSeconds();
var Time = ((hours > 12) ? hours - 12 :(hours == 0) ? 12 :hours);
Time += ((min < 10) ? ":0" : ":") + min;
Time += ((sec <10>= 12) ? " PM" : " AM");
var date = "* Greg's Firefox 1.5 * " + day + ", " + month + " " + D.getDate() + ", " + year;
var timestr = date + " " + Time;
document.getElementById("statusbar-display").setAttribute("label", timestr);
setTimeout("Clock()", 100);
}
Clock();
Alles anzeigen
*Ist natürlich noch original englisch. Kann man aber locker auf dem Beispiel von meinem umgebauten Script im verlinkten Thread auf deutsch umbauen*
Mtw. kann man (Greasemonkey ähnlich) fertig erstellte Scripte von der Platte direkt in die Erweiterung laden und zwar mit diesem Script:
function importScript(aPath)
{
if (!/^([\w-]+:)?[\/\\]/.test(aPath))
{
var chromeDir = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties)
.get("UChrm", Components.interfaces.nsILocalFile);
var pathSep = chromeDir.path.match(/[\/\\]/)[0];
aPath = chromeDir.path + pathSep + aPath.replace(/[\/\\]/g, pathSep);
}
var script = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
script.initWithPath(aPath);
Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader)
.loadSubScript(Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService)
.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromFile(script));
}
Alles anzeigen
*Script wegen Überlänge 3xgebrochen(jeweils am .get, .load, .get)*
Für die Nutzer von Greasemonkey ne Nummer, durch die die Scripte im Kontextmenü alphabetisch sortiert angezeigt werden und man mit nem Mittelklick aufs Icon direkt das Hauptfenster geöffnet bekommt:
/*---------- Greasemonkey mods ---------- */
(function() {
if(typeof GM_BrowserUI != "object") return;
//minimizable, non-modal User Scripts Manager dialog
GM_BrowserUI.manageMenuItemClicked = function(aEvent) {
window.openDialog("chrome://greasemonkey/content/manage.xul",
"manager",
"resizable, centerscreen, modal=no, dialog=no");
}
//middle click on GM statusbar icon to open User Scripts Manager
var gmIcon = document.getElementById("gm-status-image");
if(!gmIcon) return;
var clickEvt = gmIcon.getAttribute("onclick");
gmIcon.setAttribute("onclick", clickEvt + "; " +
"else if (event.button == 1) " +
"GM_BrowserUI.manageMenuItemClicked();")
//sorts scripts list on GM icon context menu alphabetically
function GM_showPopup_sorted(aEvent) {
var config = new Config(getScriptFile("config.xml"));
config.load();
var sortedScripts = config.scripts.slice(0, config.scripts.length);
sortedScripts.sort(function(a, b) {
a = a.name.toLowerCase();
b = b.name.toLowerCase();
if (a <b> b) return 1;
return 0;
})
var popup = aEvent.target;
var url = getBrowser().contentWindow.document.location.href;
GM_BrowserUI.statusEnabledItem.setAttribute("checked", GM_getEnabled());
for (var i = popup.childNodes.length - 1; i >= 0; i--) {
if (popup.childNodes[i].hasAttribute("value")) {
popup.removeChild(popup.childNodes[i]);
}
}
var foundInjectedScript = false;
for (var i = 0, script = null; script = sortedScripts[i]; i++) {
incloop:
for (var j = 0; j < script.includes.length; j++) {
var pattern = convert2RegExp(script.includes[j]);
if (pattern.test(url)) {
for (var k = 0; k < script.excludes.length; k++) {
pattern = convert2RegExp(script.excludes[k]);
if (pattern.test(url)) {
break incloop;
}
}
//get script index
getIndex:
for(var l = 0; l < config.scripts.length; l++) {
var thisScript = script;
if (thisScript.name == config.scripts[l].name) {
var idx = l;
break getIndex;
}
}
foundInjectedScript = true;
var mi = document.createElement("menuitem");
mi.setAttribute("label", script.name);
mi.setAttribute("value", idx);
mi.setAttribute("type", "checkbox");
mi.setAttribute("checked", script.enabled.toString());
popup.insertBefore(mi, document.getElementById("gm-status-no-scripts-sep"));
break incloop;
}
}
}
document.getElementById("gm-status-no-scripts").collapsed = foundInjectedScript;
}
GM_showPopup = GM_showPopup_sorted;
// edit script when middle click on popup menu item
// by pile0nades
// http://forums.mozillazine.org/viewtopic.php?p=2613221#2613221
GM_popupEditScript = function GM_popupEditScript(aEvent) {
if (aEvent.button == 2) {
var config = new Config(getScriptFile("config.xml"));
config.load();
var scriptNum = aEvent.target.value;
if (!config.scripts[scriptNum]) {
return;
}
openInEditor(getScriptFile(config.scripts[scriptNum].filename),
document.getElementById("gm-browser-bundle")
.getString("editor.prompt"))
}
closeMenus(aEvent.target);
}
var gmPopup = document.getElementById("gm-status-popup");
gmPopup.setAttribute("onclick", "GM_popupEditScript(event);");
})();
Alles anzeigen
So, dann gibts ein schönes "Schrauberupdate" für die direkte Benutzung des DOMI über das Kontextmenü der markierten Browserstelle. Dazu gekommen ist "Inspect Bookmark". Also jedes einzelne Lesezeichen und die ganze Leiste als Element kann man jetzt auch direkt ins DOMI-Visier nehmen:
/*--------------------------------------------------------
Element Inspector
by LouCypher (aka Zoolcar9)
Right click anywhere on content or browser window
to inspect the element with DOMi
--------------------------------------------------------*/
(function() {
if(typeof inspectDOMDocument != "function") {
var errMsg = "inspectChrome: DOM Inspector is not installed" +
"or is disabled";
throw new Error(errMsg);
return;
}
function addMenuitem(aNode, aIndex) {
var mi = aNode.appendChild(document.createElement("menuitem"));
mi.id = aIndex ? "context-inspector-" + aIndex : "context-inspector";
mi.setAttribute("label", aNode.id == "contentAreaContextMenu"
? "Inspect Element"
: "Inspect Chrome Element");
mi.setAttribute("oncommand",
"inspectDOMDocument(document.popupNode)");
mi.setAttribute("onclick",
"if(event.button == 1) inspectObject(document.popupNode)");
if(aNode.id != "chrome-inspector-popup") {
var ms = aNode.insertBefore(document.createElement("menuseparator"), mi);
ms.id = mi.id + "-separator";
}
}
var popups = document.getElementsByTagName("popup");
for(var i = 0; i < popups.length; i++) {
var popup = popups[i];
if(popup.getElementsByTagName("menuitem").length)
addMenuitem(popup, i);
}
var newPopup = document.createElement("popup");
newPopup.id = "chrome-inspector-popup";
addMenuitem(newPopup);
document.getElementById("mainPopupSet").appendChild(newPopup);
document.documentElement.setAttribute("context", newPopup.id);
//tab context menu
var tabContext = document.getAnonymousElementByAttribute(
gBrowser, "anonid", "tabContextMenu");
var tabInspector = tabContext.appendChild(
document.createElement("menuitem"));
tabInspector.id = "tab-inspector";
tabInspector.setAttribute("label", "Inspect This Tab");
tabInspector.setAttribute("oncommand",
"var tabbrowser = getBrowser(); " + //thanks, zeniko
"inspectDOMDocument(tabbrowser.mContextTab.localName == 'tabs'" +
" ? gBrowser" +
" : tabbrowser.mContextTab.linkedBrowser.contentDocument);");
tabInspector.setAttribute("onclick",
"if(event.button == 1) { " +
"var tabbrowser = getBrowser(); " +
"inspectObject(tabbrowser.mContextTab.localName == 'tabs'" +
" ? gBrowser" +
" : tabbrowser.mContextTab.linkedBrowser.contentDocument); " +
"}");
var tabInspectSeparator = document.createElement("menuseparator");
tabInspectSeparator.id = "tab-inspector-separator";
tabContext.insertBefore(tabInspectSeparator, tabInspector);
//bookmarks context menu
var bmContext = document.getElementById("bookmarks-context-menu");
bmContext.addEventListener("popupshowing", function(e) {
var popup = e.target;
var bmInspector = document.createElement("menuitem");
bmInspector.setAttribute("label", "Inspect Bookmark");
bmInspector.setAttribute("oncommand",
"inspectDOMDocument(document.popupNode)");
var bmInspectSeparator = document.createElement("menuseparator");
bmInspectSeparator.id = "bookmark-inspector-separator";
popup.insertBefore(bmInspectSeparator, bmContext.lastChild);
popup.insertBefore(bmInspector, bmInspectSeparator);
//popup.appendChild(bmInspectSeparator);
//popup.appendChild(bmInspector);
}, false);
})();
Alles anzeigen
Eine sehr schöne Nummer für die Tabfreunde ist die Möglichkeit, das Download-, Lesezeichen Manager- und Chronikfenster allesamt in Tabs anzeigen zu lassen:
/* Bookmark Manager open in Tab */
document.getElementsByAttribute("key", "manBookmarkKb")[0].setAttribute("oncommand", '(getBrowser().selectedTab = getBrowser().addTab("chrome://browser/content/bookmarks/bookmarksManager.xul")).label = "Bookmarks Manager";');
/* Download Manager open in Tab */
document.getElementById("Tools:Downloads").setAttribute("oncommand", '(getBrowser().selectedTab = getBrowser().addTab("chrome://mozapps/content/downloads/downloads.xul")).label = "Download Manager";');
/* History Manager open in Tab */
document.getElementById("viewHistorySidebar").setAttribute("oncommand", '(getBrowser().selectedTab = getBrowser().addTab("chrome://browser/content/history/history-panel.xul")).label = "History Manager";');
Eine schöne, nützliche Nummer ist die Möglichkeit eine, oder mehrere FeedUrls aus der Adressleiste über das Kontextmenü anzeigen und vor allem in die Zwischenablage speichern zu können.
Beispiel: erweiterungen.de
[Blockierte Grafik: http://img163.imageshack.us/img163/1328/zwischenablage01yy5.jpg]
// Copy Feed URL menuitem
// by pile0nades (with awesome help from Zoolcar9)
// Right-click the feed icon and click Copy Feed URL
(function() {
var menu = document.getElementById("toolbar-context-menu");
menu.addEventListener("popupshowing", function(event) {
if(event.target.id == "toolbar-context-menu") {
// remove old items before adding new ones
if(document.getElementById("context-copyfeed-number-0-url-separator") != null) {
menu.removeChild(document.getElementById("context-copyfeed-number-0-url-separator"));
}
for(var i=0; document.getElementById("context-copyfeed-number-" + i + "-url") != null; i++) {
menu.removeChild(document.getElementById("context-copyfeed-number-" + i + "-url"));
}
if(document.popupNode.id == "feed-button") {
// add feed items and separator
var feeds = gBrowser.selectedBrowser.feeds;
var mi = [];
for(var i=0; i<feeds.length; i++) {
mi[i] = menu.appendChild(document.createElement("menuitem"));
mi[i].id = "context-copyfeed-number-" + i + "-url";
mi[i].setAttribute("label", (feeds.length == 1 ? "Copy Feed URL" : "Copy URL of '" + feeds[i].title +"'"));
mi[i].setAttribute("oncommand", "cfu_copyFeedURL('" + feeds[i].href + "')");
}
var ms = menu.insertBefore(document.createElement("menuseparator"), mi[0]);
ms.id = mi[0].id + "-separator";
}
}
}, false);
})();
function cfu_copyFeedURL(url) {
var gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
.getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString(url);
}
Alles anzeigen
Und da wir ja bei Bildern sind zum Schluss noch ein Script, mit dem man Webbilder/Grafiken ohne Umschweife direkt übers Kontextmenü zu Imageshack, oder zu Flickr schicken kann und somit direkt fertige Urllinks zum Bild erhält, um es in Mails, Foren, Blocks, usw. verlinken zu können:
(function() {
var menuAttr = [
{ label: "Send Image to...",
id: "context-sendimageTo",
before: "context-sendimage",
url: "imageURL" },
{ label: "Send Background Image To...",
id: "context-sendbgimageTo",
before: "context-viewbgimage",
url: "bgImageURL" }
];
for(var i = 0; i < menuAttr.length; i++) {
var menu = document.createElement("menu");
menu.id = menuAttr[i].id;
menu.setAttribute("label", menuAttr[i].label);
var beforeId = document.getElementById(menuAttr[i].before);
beforeId.parentNode.insertBefore(menu, beforeId.nextSibling);
var mPopup = menu.appendChild(document.createElement("menupopup"));
mPopup.setAttribute("oncommand",
"gBrowser.loadOneTab(event.target.getAttribute('url') + " +
"escape(gContextMenu." + menuAttr[i].url + "), " +
"null, null, null, false)")
var imgHosts = [
{ label: "Flickr",
url: "http://www.flickr.com/tools/sendto.gne?url=" },
{ label: "ImageShack",
url: "http://imageshack.us/transload.php?url=" }
]
for(var j = 0; j < imgHosts.length; j++) {
var mItem = mPopup.appendChild(document.createElement("menuitem"));
mItem.setAttribute("label", imgHosts[j].label);
mItem.setAttribute("url", imgHosts[j].url);
}
}
var cm = document.getElementById("contentAreaContextMenu");
cm.addEventListener("popupshowing", function(event) {
gContextMenu.showItem("context-sendimageTo", gContextMenu.onImage);
gContextMenu.showItem("context-sendbgimageTo", gContextMenu.hasBGImage);
}, false);
})();
Alles anzeigen
So, fürs erste lang das und ich hoffe, es ist für den einen oder anderen was schickes dabei :wink:
Es grüßt die Dunkle Seite!