„Externe Links standardmäßig in einem neuen Tab öffnen“ funktioniert nicht

Hallo,

In letzter Zeit öffnen sich alle externen Links auf meinem Forum nicht mehr in einem neuen Tab. Ich habe die Option „Externe Links standardmäßig in einem neuen Tab öffnen

1 „Gefällt mir“

Hast du das im abgesicherten Modus ausprobiert? Vielleicht stört ein neues Theme, eine Theme-Komponente oder ein Plugin? :face_with_monocle:

2 „Gefällt mir“

Ich habe die Seite im abgesicherten Modus ausprobiert, aber das Problem besteht weiterhin.

Welche Version von Discourse verwendest du? Es wird einfacher sein zu sehen, ob ich das Problem nachstellen kann.

Ich verwende die neueste Version 2.7.0.beta1.

Kannst du das hier auf Meta testen? Richte deine Einstellungen hier so ein, dass externe Links in einem neuen Tab geöffnet werden, und prüfe, ob es bei dir funktioniert. Bei mir funktioniert es ziemlich gut.

1 „Gefällt mir“

Hallo @riteshsaini,

Eine der besten ersten Schritte zur Fehlerbehebung wäre, das DOM direkt über die Web-Entwicklerkonsole zu untersuchen und zu prüfen, welche genauen Attribute dein Link hat, insbesondere das Attribut „target“.

Oft kannst du diese DOM-Attribute nicht direkt beim Lesen des Quellcodes sehen (diese Attribute können im DOM vorhanden sein, aber nicht im Quellcode). Daher musst du das DOM abfragen, um die Attribute zu erhalten (um zu 100 % sicher zu sein).

Hoffentlich ergibt das Sinn.

2 „Gefällt mir“

Ich glaube, genau das hat er hier getan

Nein. Das Lesen des Quellcodes ist nicht dasselbe wie das Prüfen des DOM.

DOM-Attribute können sich vom Quellcode unterscheiden (und tun dies oft), insbesondere auf Webseiten, die viel JavaScript zur Manipulation des DOM verwenden (wie Discourse).

Deshalb habe ich ausdrücklich empfohlen, das DOM abzufragen und nicht einfach nur den Quellcode anzusehen :slight_smile:

Ich stimme dir jedoch, @osioke, zu, dass der Quellcode eindeutig zeigt, dass das target-Attribut fehlt. Wenn wir jedoch das DOM prüfen, sind wir uns sicher, welches Attribut gesetzt ist – denn das DOM kann sich in einem anderen Zustand befinden als der Quellcode (und ist dies oft).

Ich bin persönlich ein großer Fan des Prinzips „Nichts voraussetzen“. Deshalb habe ich @riteshsaini vorgeschlagen, es durch eine Prüfung des DOM zu „sicherzustellen“ und dann „weiterzugehen“.

Es ist sehr gut möglich, dass sich die target-Attribute des Links im DOM und im Quellcode im selben Zustand befinden. Ich empfehle jedoch allen, die Probleme beheben, niemals solche Details vorauszusetzen. Daher mein Vorschlag, das DOM als Schritt zur Fehlerbehebung abzufragen.

Ich hoffe, das hilft weiter.

2 „Gefällt mir“

Anstatt Einstellungen anzupassen, verwende ich diese Methode

Demo: Theme Creator

<script type="text/discourse-plugin" version="0.8">
    api.onPageChange((url, title) => {
        // Externe Links automatisch in neuem Tab oder Fenster öffnen
        var pc = 1;
        if ($("html").hasClass("mobile-device")) pc = 0;
        var links = document.links;
        for (var i = 0, linksLength = links.length; i < linksLength; i++) {
            if (links[i].hostname != window.location.hostname) {
                if (pc) links[i].target = '_blank'; else links[i].target = '_self';
            }
        }
    });
</script>
2 „Gefällt mir“

… und veranschaulicht dies perfekt anhand eines soliden Discourse-API-Beispiels, wie sich der DOM und der Quellcode in einem unterschiedlichen Zustand befinden können. Sie werden die Zielattribute im HTML-Quellcode, die vom obigen JavaScript gesetzt werden, nicht sehen :slight_smile:

2 „Gefällt mir“

@Bcat danke für das Teilen dieses Snippets. Aber wo sollte ich es hinzufügen?

PS: Entschuldige die dumme Frage. Ich bin kein Programmierer und völlig neu bei Discourse :slight_smile:

1 „Gefällt mir“

Hey @neounix, danke für deine Antwort

Ich bin mir nicht ganz sicher, wie man das macht :slight_smile: Wenn du etwas Zeit hast, gib mir bitte eine kurze Erklärung dazu.

1 „Gefällt mir“

Thema anzeigen: Installing a theme or theme component

discourse-automatically-open-external-links-in-new-tab.zip|Anhang (843 Bytes)

1 „Gefällt mir“

[quote=“riteshsaini, Beitrag:1, Thema:173344”]
In letzter Zeit öffnen sich alle externen Links auf meinem Forum nicht mehr in einem neuen Tab. Ich habe die Option „Externe Links standardmäßig in einem neuen Tab öffnen

3 „Gefällt mir“

Es war nicht angehakt, also habe ich es angehakt. Jetzt öffnet es die Links nur in einem neuen Tab, wenn ich eingeloggt bin. Wenn ich die Seite im Inkognito-Tab prüfe, funktioniert es immer noch nicht.

1 „Gefällt mir“

Es funktioniert einwandfrei, genau wie es soll. Vielen Dank! :slight_smile:

Gibt es eine Lösung, um allen externen Links, auch denen, die von Administratoren hinzugefügt wurden, das Attribut rel="nofollow" hinzuzufügen?

Ich versuche das schon seit Monaten vergeblich.

1 „Gefällt mir“

Für Foren, in denen Links über Bitly oder andere Seiten zum Teilen und Herunterladen verwendet werden (weniger sicher), würdest du in Erwägung ziehen, rel="noopener noreferrer" anstelle von rel="nofollow" zu verwenden?
Du kannst mehr über noopener noreferrer erfahren.

1 „Gefällt mir“

Ich könnte noopener noreferrer hinzufügen, aber ich muss weiterhin auch nofollow verwenden. Der Grund ist, dass ich nicht möchte, dass Google diese Links verfolgt oder indiziert, da es sich um Affiliate-Links handelt. Nur nofollow kann dabei helfen.

1 „Gefällt mir“

Fügen Sie links[i].rel = 'nofollow'; hinzu oder Datei: discourse-automatically-open-external-links-in-new-tab.zip (856 Bytes)

1 „Gefällt mir“