Oder mit dem Trellix Stinger!
Aber auf jeden Fall einen Scan auf Schadsoftware!
Beiträge von Mira_Belle
-
-
schlingo Und was interessiert Dich das?
Bzw. Was geht es Dich an? -
Horstmann Ich danke Dir ganz
lichst.Aber ich habe es nun doch per CSS hinbekommen.
Habe das CSS aber nochmals bearbeitet.CSS
Alles anzeigen@-moz-document url(chrome://browser/content/browser.xhtml) { #context-closetab + menuseparator { order: 1 !important; } #context-inspect, #context-closetab { order: 1 !important; } #context-media-eme-separator { order: 1 !important; } #ublock0_raymondhill_net-menuitem-10 { order: 2 !important; } #_ce1a7b4e-0937-4480-b15e-42a996d680b8_-menuitem-_open-in-private-mode { order: 3 !important; } #languagetool-webextension_languagetool_org-menuitem-_languagetool-menu, #_0da2e603-21ba-4422-8049-b6d9e013ed84_-menuitem-_Google, #savewebpas_jeffersonscher_com-menuitem-_saveWebPas { order: 1 !important; } #context-inspect { position: relative !important; margin-top: 6px !important; } #context-inspect::before { content: ""; display: block; position: absolute; left: 11px !important; /* Abstand links anpassen */ right: 11px !important; /* Abstand rechts anpassen */ top: -3px !important; /* Höhe nach oben anpassen */ height: 1px !important; /* Dicke der Linie */ background: var(--uc-color-orange-normal) !important; /* Farbe anpassen */ } } -
Habe es doch alleine geschafft!
Ich wusste noch, dass ich soetwas schon einmal irgendwo gemacht habe!
Die Lösung, ein Pseudo-Element.
Hier der Code:CSS
Alles anzeigen#context-inspect { position: relative !important; margin-top: 6px !important; } #context-inspect::before { content: ""; display: block; position: absolute; left: 11px !important; /* Abstand links anpassen */ right: 11px !important; /* Abstand rechts anpassen */ top: -3px !important; /* Höhe nach oben anpassen */ height: 2px !important; /* Dicke der Linie */ background: red; /* Farbe anpassen */ } -
Und wie erstelle ich mir einen neuen, zusätzlichen Separator?
Der soll dann zwischen "Untersuchen" und "Tab schließen" sein.
So eine XXXX, ich wusste das einmal!Horstmann Ja, eigentlich!
Aber genau dieser eben nicht. -
So, habe mal etwas aufgeräumt!
CSS
Alles anzeigen#contentAreaContextMenu > menuseparator:nth-child(127) { order: 1 !important; } #context-inspect, #context-closetab { order: 1 !important; } #context-media-eme-separator { order: 1 !important; } #languagetool-webextension_languagetool_org-menuitem-_languagetool-menu, #_ce1a7b4e-0937-4480-b15e-42a996d680b8_-menuitem-_open-in-private-mode, #_0da2e603-21ba-4422-8049-b6d9e013ed84_-menuitem-_Google, #savewebpas_jeffersonscher_com-menuitem-_saveWebPas { order: 1 !important; }Nun passt es.
Dass die beiden Separatoren für sich alleine stehen, ist Absicht!
2002Andreas Danke!!
Genau der ist es! -
Ok, habe es dank Eurer Hilfe hinbekommen!
Das CSS für das Menü sieht jetzt so aus:CSS
Alles anzeigen#contentAreaContextMenu > menuseparator:nth-child(127) { order: 1 !important; } #context-closetab { order: 1 !important; } #context-media-eme-separator { order: 1 !important; } #languagetool-webextension_languagetool_org-menuitem-_languagetool-menu { order: 1 !important; } #_ce1a7b4e-0937-4480-b15e-42a996d680b8_-menuitem-_open-in-private-mode { order: 1 !important; }
Und das Menü so:
1.
und 2. 
Lässt sich der Separator "#contentAreaContextMenu > menuseparator:nth-child(127)"
irgendwie etwas differenzierter ansprechen?OH

Muss nochda rein quetschen!
-
Danke 2002Andreas soweit war ich auch schon.
Aber ich möchte jene Einträge nicht einfach vom Ende an den Anfang verschieben, sondern mitten rein!
Also genauer gesagt direkt vor dem Eintrag "Untersuchen".
Und das bekomme ich per CSS einfach nicht hin. -
Hi, ich bräuchte mal eine Info!
Die Erweiterung "Simple Translate" erstellt zwei Einträge im Kontextmenü,
je nach "Funktion"!
1. Selektor "#simple-translate_sienori-menuitem-_translateText" für "Ausgewählten Text übersetzen"
und
2. Selektor "#simple-translate_sienori-menuitem-_translatePage" für "Diese Seite übersetzen".
Nun sind die immer recht weit am Ende des Menüs und auch nicht immer an der gleichen Position,
hängt davon ab, welche Erweiterung sonst noch so mitmischt.
Wie lassen sich diese Einträge sortieren bzw. jene von "Simple Translate" gänzlich verschieben?
Per CSS habe ich es schon probiert, habe aber den richtigen Kniff nicht gefunden,
oder es geht so eventuell auch gar nicht!
Gäbe es da dann eine Erweiterung, die da irgendwie einspringen könnt? -
Aber es funktioniert nicht in v145.0rc1.
Das wäre merkwürdig, denn in der Nightly 146.0a1 funktioniert es.
Und nun zitiere ich mich mal selbst!Ach herrje, ich glaube, ich tu Boesenfeger unrecht.
Es gibt eine viel ältere Anpassung des Skripts an DeepL!Dazu aber heute Nachmittag mehr. Muss weg.
Ich glaube fast, universum123 hatte es verbrochen! (16. September 2018)
BeitragRe: TranslateGoogles.uc.js
[…]
ich hab das mal auf die schnelle ausprobiert
gibts da große relevante Unterschiede bei der Übersetzung
(Quelltext, 34 Zeilen)
wens denn so wäre
würde ich mir die mühe geben und das Icon von Deepl richtig machen (https://www.base64-image.de/)
:-??
gruß uni
universum12316. September 2018 um 15:39
Denn jene Version von Tanni (18. Februar 2018) hat diesen Code noch nicht!BeitragRe: ContextTranslate aktualisiert
Mir ist eine andere Idee für deepl.com eingefallen, die zwar bisschen arg "dirty" ist, aber dafür sehr einfach umzusetzen ist. Und trotzdem ein Ansatz der schonmal funktioniert.
Ich übergebe den Text im userchrome-Script genauso als Parameter wie beim obigen Google-Script. Dann übernimmt aber vorläufig ein Greasemonkey-Script die Eingabe auf der deepl.com Website. Alle möglichen Sonderzeichen müssen noch ersetzt/umgewandelt werden. Aber es soll ja nur ein erster Ansatz sein.
Vielleicht können…Tanni18. Februar 2018 um 13:15
Es ist also höchstwahrscheinlich wirklich so, wie Du Sören Hentzschel es gepostet hast.
Ganze Seiten konnten wohl nie mit DeepL übersetzt werden. -
Ach herrje, ich glaube, ich tu Boesenfeger unrecht.
Es gibt eine viel ältere Anpassung des Skripts an DeepL!
Dazu aber heute Nachmittag mehr. Muss weg. -
Sören Hentzschel Ok, ich habe mich da ganz offensichtlich missverständlich ausgedrückt!
Ich meine, als ich das Skript für DeepL angepasst habe, damals, funktionierte es.
Deshalb hätte ich, damals, besagte Zeilen Code nicht rausgenommen.
Da ich diese Funktion aber nie nutz(t)e, ist mir halt nie aufgefallen,
dass es irgendwann nicht mehr funktionierte.Es hat sich ja auch nie irgendwer gemeldet!
Jetzt weiß ich, dass es nicht geht, und habe den Code bereinigt.
Ergo, alles wird gut.
/* ------------------------------------------------------------------------------ */
Nachtrag! Ganz Wichtig
Ich schmücke mich hier mit fremden Federn!!
Nein, die Anpassungen des Skripts an DeepL stammen gar nicht von mir!
Boersenfeger war's! ER ist schuld!


BeitragRe: TranslateGoogles.uc.js
// Wer lieber mit Deepl übersetzen will:
Hier ist eine Modifikation nicht nötig:
Siehe weiter unten im Thread...
(Quelltext, 35 Zeilen)
Boersenfeger15. März 2019 um 12:07 Ich habe nur das mit den Symbolen angepasst und hinzugefügt.
-
Mal überarbeitet und bereinigt!
PS. Link im header neu gesetzt!JavaScript
Alles anzeigen// Translate_DeepL.uc.js // https://github.com/ardiman/userChrome.js/tree/master/contexttranslate // ex ContextTranslate.uc.js/// // modifiziert by universum 123, Umlaute geändert by 2002Andreas // https://www.camp-firefox.de/forum/thema/139966/?postID=1281813#post1281813 (function () { if (location.href !== 'chrome://browser/content/browser.xhtml') return; let translate = function () { let browserMM = gBrowser.selectedBrowser.messageManager; browserMM.addMessageListener('getSelection', function listener(message) { let text = (message.data !== ''); if (text) { openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab'); }; browserMM.removeMessageListener('getSelection', listener, true); }); browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true); } let menuitem = document.createXULElement('menuitem'); menuitem.id = 'context-DeepLtranslate'; menuitem.setAttribute('label', '\u00dcbersetzen (DeepL)'); menuitem.classList.add('menuitem-iconic'); let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); let IconPath = '/chrome/icons/'; // Pfad in den entsprechenden Unterordner let ButtonIcon = "DeepL_2.png"; // Name & Dateiendung des anzuzeigenden Symbols! menuitem.style.setProperty('--menuitem-icon', 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")'); menuitem.addEventListener('command', translate); let refItem = document.getElementById('context-inspect'); refItem.parentNode.insertBefore(menuitem, refItem); })();Was aber nicht funktioniert, ganze Seiten übersetzen zu lassen.
Wie ich bereits schrieb: Das hat mit DeepL noch nie in der kostenlosen Version funktioniert. Dafür musst du mindestens 7,49 € pro Monat bezahlen.
Irgendwann einmal muss es funktioniert haben, sonst hätte ich es ja nicht eingebaut.
Ist aber auch nun egal, es geht nicht, also Code bereinigt! -
...
Eigentlich wollte ich mir lediglich nochmal zu Gemüte führen, auf welche Weise es nimmer funktioniert. Und siehe da: es funktioniert einfach wieder.
Tatsache. Da hat DeepL dann doch wieder erbarmen gehabt und die Änderungen teilw. zurückgenommen.
Was aber nicht funktioniert, ganze Seiten übersetzen zu lassen.
D.h. aus dem "alten" Skript können die Zeilen 17 & 18 gelöscht werden. -
Mh, leider hatte die letzte Version einen Bug!
Bei mehrmaligen Nutzen der Funktion öffnete sich jedes Mal ein Tab mehr.
Eventuell jetzt:JavaScript
Alles anzeigen(function () { if (location.href !== 'chrome://browser/content/browser.xhtml') return; let translate = function () { let browserMM = gBrowser.selectedBrowser.messageManager; function listener(message) { let text = message.data; const deepl__deeplURL = `https://www.deepl.com/translator`; const browserLang = navigator.language; const deepl__defaultLang = browserLang.startsWith('de') ? 'en' : 'de'; if (text) { openWebLinkIn(`${deepl__deeplURL}#${deepl__defaultLang}/${encodeURIComponent(text)}`, 'tab'); } browserMM.removeMessageListener('getSelection', listener, true); } browserMM.addMessageListener('getSelection', listener); browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true); }; let menuitem = document.createXULElement('menuitem'); menuitem.id = 'context-DeepLtranslate'; menuitem.setAttribute('label', 'Übersetzen (DeepL)'); menuitem.classList.add('menuitem-iconic'); let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); let IconPath = '/chrome/icons/'; let ButtonIcon = "DeepL_2.png"; menuitem.style.setProperty('--menuitem-icon', 'url("file:' + ProfilePath + IconPath + ButtonIcon + '")'); menuitem.addEventListener('command', translate); let refItem = document.getElementById('context-inspect'); refItem.parentNode.insertBefore(menuitem, refItem); })(); -
Nachtrag!
Noch etwas "Feintuning"
JavaScript
Alles anzeigen// Translate_DeepL.uc.js (function () { if (location.href !== 'chrome://browser/content/browser.xhtml') return; let translate = function () { let browserMM = gBrowser.selectedBrowser.messageManager; browserMM.addMessageListener('getSelection', function listener(message) { let text = message.data; let deepl__selection = getSelection().toString(); const deepl__deeplURL= `https://www.deepl.com/translator#null/`; const browserLang = navigator.language; const deepl__defaultLang = browserLang.startsWith('de') ? 'en' : 'de'; if (text) { openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab'); window.open(`${deepl__deeplURL + deepl__defaultLang}/${encodeURIComponent(deepl__selection).replaceAll("%2F", "\\%2F").replaceAll("%7C", "\\%7C").replaceAll("%5C", "%5C%5C")}`, '_blank'); } browserMM.storage.onChanged.addListener(getDefaultSettings); }); browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true); }; let menuitem = document.createXULElement('menuitem'); menuitem.id = 'context-DeepLtranslate'; menuitem.setAttribute('label', 'Übersetzen (DeepL)'); menuitem.classList.add('menuitem-iconic'); let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); let IconPath = '/chrome/icons/'; let ButtonIcon = "DeepL_2.png"; menuitem.style.setProperty('--menuitem-icon', 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")'); menuitem.addEventListener('command', translate); let refItem = document.getElementById('context-inspect'); refItem.parentNode.insertBefore(menuitem, refItem); })(); -
Ich habe nach langem Hin und Her endlich eine Möglichkeit gefunden, die funktioniert

Hier das "neue" Skript.JavaScript
Alles anzeigen// Translate_DeepL.uc.js (function () { if (location.href !== 'chrome://browser/content/browser.xhtml') return; let translate = function () { let browserMM = gBrowser.selectedBrowser.messageManager; browserMM.addMessageListener('getSelection', function listener(message) { let text = message.data; let deepl__selection = getSelection().toString(); const deepl__deeplURL= `https://www.deepl.com/translator#null/`; const deepl__defaultLang = navigator.language.match(/^(zh-)?\w+/g)[0] || 'en'; // change default language if you want if (text) { openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab'); window.open(`${deepl__deeplURL + deepl__defaultLang}/${encodeURIComponent(deepl__selection).replaceAll("%2F", "\\%2F").replaceAll("%7C", "\\%7C").replaceAll("%5C", "%5C%5C")}`, '_blank'); } browserMM.storage.onChanged.addListener(getDefaultSettings); }); browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true); }; let menuitem = document.createXULElement('menuitem'); menuitem.id = 'context-DeepLtranslate'; menuitem.setAttribute('label', 'Übersetzen (DeepL)'); menuitem.classList.add('menuitem-iconic'); let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); let IconPath = '/chrome/icons/'; let ButtonIcon = "DeepL_2.png"; menuitem.style.setProperty('--menuitem-icon', 'url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '")'); menuitem.addEventListener('command', translate); let refItem = document.getElementById('context-inspect'); refItem.parentNode.insertBefore(menuitem, refItem); })(); -
Wenn mir jetzt jemand ganz genau erklärt, was wie getestet werden soll, ....
-
Wurzelknolle Und unter Einstellungen auch "Links in Tabs anstatt in neuen Fenstern öffnen" aktiviert?
-
Genau so habe ich auch diese Einstellungen.