Hallo zusammen,
gibt es eine Erweiterung, die es ermöglicht Javascript-Befehle (sagt man das so?), wie beispielsweise javascript:gopost('xyz'), in einem neuen Tab zu öffnen?
Hallo zusammen,
gibt es eine Erweiterung, die es ermöglicht Javascript-Befehle (sagt man das so?), wie beispielsweise javascript:gopost('xyz'), in einem neuen Tab zu öffnen?
Hallo Krapf,
willkommen im Forum.
Das hier könnte klappen:
https://addons.mozilla.org/de/firefox/add…ink-in-new-tab/
ich habe es nicht probiert aber teste du es doch mal und berichte ... posiv oder negativ
dann hilft es ev. anderen Usern
Vielen Dank für den Tipp! Leider bringt die Erweiterung nicht den gewünschten Erfolg.
Ich glaub du musst mal ein ganz konkretes Beispiel mit Links bringen...
Beispielsweise auf dieser Seite: https://testdrive.loncapa.org/adm/login
Meine Wunschvorstellung wäre, dass ich auf "Contact Helpdesk" einen Rechtsklick mache und dann "Open Link in New Tab" auswählen kann. Oder wenn das nicht möglich ist, per Strg + Linksklick.
Link auf der linken Seite (javascript):
[Blockierte Grafik: http://fs1.directupload.net/images/150627/cu4m5kcp.jpg]
Link mittig in der Seite:
[Blockierte Grafik: http://fs1.directupload.net/images/150627/zxqhuxvi.jpg]
Oh, gar nicht gesehen, dass das zweimal vorkommt. Ich meine den Link auf der linken Seite. Den würde ich gerne in einem neuen Tab öffnen können.
Hallo,
mach bitte folgenden Test:
Gib in die Adresszeile ein:
about:config?filter=devtools.chrome.enabled
und drücke die Enter-Taste;
wenn eine Warnung kommt, bestätige sie;
wenn die Zeile mit dem Namen devtools.chrome.enabled den Wert false hat, setze ihn per Doppelklick auf true, andernfalls tu nichts auf dieser Seite.
Dann öffne mit Strg+Umschalt+J die Browser-Konsole und gib in die Eingabezeile unten den folgenden Code ein, gefolgt von der Enter-Taste:
var refItem = document.getElementById('context-openlinkintab');
var item = document.createElement('menuitem');
refItem.parentNode.insertBefore(item, refItem);
item.id = 'context-open-js-linkintab';
item.setAttribute('label', 'JS-Link in neuem Tab öffnen');
item.setAttribute('oncommand', '\
var tab = gBrowser.selectedTab; \
duplicateTabIn(tab); \
gBrowser.moveTabForward(tab); \
gContextMenu.openLinkInCurrent(); \
');
document.getElementById('contentAreaContextMenu').addEventListener('popupshowing', function() {
if (gContextMenu.linkProtocol == 'javascript')
item.removeAttribute('hidden')
else
item.setAttribute('hidden', true);
});
Alles anzeigen
Teste nun das Öffnen von JS-Links über das Kontextmenü.
Das geht schon in die richtige Richtung, danke!
Ist es vielleicht möglich, dass der Fokus auf der Ursprungsseite bleibt und diese nicht neu geladen wird?
Teste folgenden Code in der Browserkonsole.
Falls Firefox seit der Eingabe des letzten Codes nicht neu gestartet wurde, starte ihn neu.
about:config braucht nicht mehr aufgerufen werden, die Einstellung bleibt erhalten.
Sonst ist die Vorgangsweise wie oben.
function onCmd() {
var link = gContextMenu.link;
var tab = gBrowser.selectedTab;
duplicateTabIn(tab);
var browser2 = gBrowser.getBrowserForTab(tab.nextSibling);
browser2.addEventListener('load', function onLoad() {
browser2.contentDocument.location.href = link;
browser2.removeEventListener('load', onLoad, true);
}, true);
};
var refItem = document.getElementById('context-openlinkintab');
var item = document.createElement('menuitem');
refItem.parentNode.insertBefore(item, refItem);
item.id = 'context-open-js-linkintab';
item.setAttribute('label', 'JS-Link in neuem Tab öffnen');
item.setAttribute('oncommand', '(' + onCmd.toString() + ')()');
document.getElementById('contentAreaContextMenu').addEventListener('popupshowing', function() {
if (gContextMenu.linkProtocol == 'javascript')
item.removeAttribute('hidden')
else
item.setAttribute('hidden', true);
});
Alles anzeigen
Ja, genau so hatte ich mir das vorgestellt. Vielen, vielen Dank!
Es gibt doch sicher eine Möglichkeit, dass "JS-Link in neuem Tab öffnen" auch nach einem Neustart von Firefox noch vorhanden ist oder?
Ja, mit der Erweiterung userChromeJS und einem Skript, das im Wesentlichen aus dem bisherigen Code besteht, machen wir den Menüeintrag dauerhaft.
Informationen dazu stehen hier:
https://github.com/ardiman/userCh…aster/README.md
und hier: https://www.camp-firefox.de/forum/viewtopi…=952099#p952099
Das Skript:
(function() {
if (location != 'chrome://browser/content/browser.xul')
return;
function onCmd() {
var link = gContextMenu.link;
var tab = gBrowser.selectedTab;
duplicateTabIn(tab);
var browser2 = gBrowser.getBrowserForTab(tab.nextSibling);
browser2.addEventListener('load', function onLoad() {
browser2.contentDocument.location.href = link;
browser2.removeEventListener('load', onLoad, true);
}, true);
};
var refItem = document.getElementById('context-openlinkintab');
var item = document.createElement('menuitem');
refItem.parentNode.insertBefore(item, refItem);
item.id = 'context-open-jslink-intab';
item.setAttribute('label', 'JS-Link in neuem Tab öffnen');
item.setAttribute('oncommand', '(' + onCmd.toString() + ')()');
document.getElementById('contentAreaContextMenu').addEventListener('popupshowing', function() {
if (gContextMenu.linkProtocol == 'javascript')
item.removeAttribute('hidden')
else
item.setAttribute('hidden', true);
});
})();
Alles anzeigen
Im neuen Tab wird zuerst die Ausgangsseite geladen und erst dann die JS-Funktion im Link ausgeführt.
Das geht nicht anders, weil die Funktion möglicherweise etwas auf dieser Seite durchführt, z.B. ein Menü öffnen oder zu einem bestimmten Abschnitt springen. Dazu ist es natürlich notwendig, dass die Seite vorhanden ist.
Ruft die Funktion nur eine andere Seite auf, wie in deinem Beispiel in Beitrag 5, wäre das Laden der Ausgangsseite nicht notwendig, aber das weiß man im vorhinein nicht.
Jetzt steht "JS-Link in neuem Tab öffnen" dauerhaft da, vielen Dank dafür! Allerdings wir statt des "ö" ein Kasten mit einem Fragezeichen angezeigt und es öffnet sich nur die Ausgangsseite in einem neuen Tab, sonst passiert nichts.
EDIT: Das Umlautproblem habe ich dank der Readme-Datei lösen können.
Also die Ausgangsseite wird in einem neuen Tab im Hintergrund geöffnet und bleibt dort?
In dem Beispiel von Beitrag 5 ist das auch so?
Starte nochmal neu mit Skriptcache-Leeren. Das geht auch, wenn man in die Browserkonsole eingibt:
Sehen wir nach, ob es dazu Meldungen in der Browserkonsole gibt.
Rufe eine Seite zum Testen auf. Dann wechsle zur Browserkonsole. Oben befinden sich fünf Buttons für Meldungskategorien. Schalte die JS-Meldungen ein und die anderen aus. Dann lösche alles Angezeigte mit Klick auf "Leeren". Dann klicke im Hauptfenster auf "JS-Link in neuem Tab öffnen". Stehen nun Meldungen in der Konsole?
Habe die Seite aus Beitrag #5 genutzt:
[attachment=0]Unbenannt.png[/attachment]
Auch von mir ein Dankeschön an aborix für das Skript. Hier funktioniert es wunderbar. Randnotiz, vermutlich irrelevant für Krapf: Javascript muss für die jew. Seite natürlich erlaubt sein, damit es funktioniert. Wenn Javascript deaktiviert ist (ist bei mir mittels NoScript standardmäßg der Fall), funktioniert es logischerweise nicht und man hat dasselbe Ergebnis wie er -> Tab wird dupliziert, aber das Klicken des Javascript-Links bleibt ohne Folgen.
Viele Grüße
@ bluemule:
Danke für's Danke, es freut mich immer, wenn etwas von mir Gebasteltes noch jemand anderer brauchen kann.
@ Krapf:
Wird bei dir der neue Tab immer unmittelbar rechts neben dem Ausgangstab geöffnet?
Funktioniert es, wenn du das Skript nicht verwendest und dafür den Code von #12 in die Browserkonsole eingibst?
Mach bitte auch folgenden Test:
Füge im Skript nach Zeile 11:
Zitat
browser2.addEventListener('load', function onLoad() {
diese Zeile ein:
und zeige mir wieder die Meldungen in der Browserkonsole.
Zitat von aborixWird bei dir der neue Tab immer unmittelbar rechts neben dem Ausgangstab geöffnet?
Ja.
Zitat von aborixFunktioniert es, wenn du das Skript nicht verwendest und dafür den Code von #12 in die Browserkonsole eingibst?
Nein.
Zitat von aborix
[attachment=0]Unbenannt.png[/attachment]