Auslesen eines Links, ob ein Anker vorhanden ist

Diskutiere Auslesen eines Links, ob ein Anker vorhanden ist im JavaScript Forum im Bereich Programmierung; Hi Ich habe das Problem, dass ich leider nicht genau weiß, wie ich es umsetzen kann, eine Datei aus einem Link, auf einen Anker zu prüfen. Geht...
B

Big Sanch

Member
Beiträge
6
Punkte Reaktionen
0
Hi

Ich habe das Problem, dass ich leider nicht genau weiß, wie ich es umsetzen kann, eine Datei aus einem Link, auf einen Anker zu prüfen. Geht das?

Ich habe eine Liste mit vielen Einträgen, welche weitergeleitet werden auf einen Content, welche ich von Extern habe und nicht verändern kann.
Ich habe immer einen einfachen Link zu den Content Seiten und füge einfach einen Anker Tag zum Url, bei dem ich landen möchte. Beispiel:

Liste an Namen, als Beispiel:
Code:
<a href="/leute/name1/" class="link">Name 1</a>
<a href="/leute/name2/" class="link">Name 2</a>
<a href="/leute/name3/" class="link">Name 3</a>
Das ist der Ausgangspunkt, das sind die Originale, welche nicht verändert werden können, da bereits vorhanden.
Da ich nicht den kompletten Anfang der Seite benötige, sondern eventuell eine Liste der Adressen zeigen will, was auf der original Seite mit einem Anker versehen ist.
Als Beispiel hat die Seite Name 1 folgende Anker:
  • Daten
  • Infos
  • Biographie
  • Adresse
  • Kontakt
Auf der Seite möchte ich nun die daten der Adresse anzeigen lassen und nicht dauernd scrollen, also mache ich nun folgende Änderungen auf der aktuellen Seite:
Code:
<a href="xxx/leute/name1/#Adresse" class="link">Name 1</a>
<a href="xxx/leute/name2/#Adresse" class="link">Name 2</a>
<a href="xxx/leute/name3/#Adresse" class="link">Name 3</a>
So nun zu meinem Problem, auf der anderen Seite sind alle Seiten bereits vorhanden und keiner will sich die Arbeit machen, alles erst mal anzupassen, also bleibt es wie es ist.
Da aber am erstem Projekt mehrere verschiedene Leute mit gearbeitet haben, und einige Name auch mehr al eine Adresse haben, hat es sich ergeben, dass bei einer Seite, also als Beispiel Name1 der Anker Adresse und bei einem anderen, als Beispiel Name4 Adressen lautet.

Ist es mir möglich ohne großen Aufwand, den Link zu überprüfen, ob es den Anker Adressen gibt, ansonsten soll er Adresse verwenden, irgendwie mit jQuery oder ähnliches?
Zugang zu dem anderen Content habe ich, aber erst einmal Hunderte Seiten manuell anzupassen möchte ich vermeiden.

Ich hoffe ich konnte es verständlich erklären.
Danke schon mal für alle die sich die zeit genommen haben zum Lesen :)
 
S

Sempervivum

Well-known member
Beiträge
274
Punkte Reaktionen
42
Zugang zu dem anderen Content habe ich, aber erst einmal Hunderte Seiten manuell anzupassen möchte ich vermeiden.
Das manuell umzuändern wäre wohl wirklich zu aufwändig aber was hältst Du davon, es mit einem kleinen PHP-Skript automatisch zu machen? Das braucht dann nur einmal zu passieren und nicht bei jedem Seitenaufruf. Du schreibst ja, dass Du Zugriff auf die betr. Seiten hast.
 
B

Big Sanch

Member
Beiträge
6
Punkte Reaktionen
0
Danke @Sempervivum

Wie soll das genau aussehen, bin nicht ganz sicher, es sind massenhaft Ordner mit Unterordnern und Seiten vorhanden.
Es wäre zwar möglich diese Pfade alle anzugeben, rekursiv suchen eventuell auch, da aber mehrere andere Ordner noch vorhanden sind, müsste ich da schon eher mit einer Liste an Verzeichnissen arbeiten. Und erst mal raussuchen, in welchen überall Kundendaten wären. Denke das wäre auch noch machbar, mit meinem Wissensstand :)

Sollten aber die, die den Content erstellt haben, sich eventuell zum irgendwas updaten oder nachtragen über FTP oder Dreamweaver oder was auch immer jeder einzelne verwendet, oder verwendet hat, einloggen und einfach auf speichern drücken, hat es sich wieder erledigt. Außer ich lasse das Skript häufiger laufen, was ich aber auch nicht so gut finde.

Noch irgendwelche Ideen hierzu? Wenn nicht muss ich das wohl so machen, hatte gehofft, das irgend wie mit JS oder so zu erledigen, nach dem Motto:
Code:
if (url_content_vorhanden == '<a name="Adressen">') {
url = url + '#Adressen'
} else {
url = url + '#Adresse'
}

Danke trotzdem für deine Hilfe, ich werde diese versuchen, wenn nichts anderes möglich ist
 
Zuletzt bearbeitet:
S

Sempervivum

Well-known member
Beiträge
274
Punkte Reaktionen
42
Wenn das so ist, wie Du beschreibst, ist das Umändern der Originale wohl doch nicht praktikabel.
Aber man kann das selbstverständlich auch mit Javascript machen, ich werde da etwas ausarbeiten. Für Anker gibt es zwei Möglichkeiten:
1. Ein Element mit einer ID als Sprungziel und
2. Ein a-Element mit einem Namen als Sprungziel.
So wie Du das Szenario beschreibst und Du postet ja auch entspr. Code, trifft wohl eher das zweite zu, obwohl es veraltet ist und nicht mehr empfohlen wird:
https://wiki.selfhtml.org/wiki/HTML...e_Verweise#Sprungmarken_mit_dem_name-Attribut
Aber kein Problem, ein Skript zu schreiben, das beides berücksichtigt.

Edit: Wenn ich mir deine anderen Beiträge ansehe, scheinst Du schon über gewisse Kenntnisse zu verfügen. Ich empfehle, das Zieldokument mit der fetch-API einzulesen und mit DOMParser zu parsen. Hier eine Demo aus der Schublade:
Code:
        fetch('the-document.xml')
            .then(response => response.text())
            .then(str => (new window.DOMParser()).parseFromString(str, "text/xml"))
            .then(data => {
                console.log(data);
                data.querySelectorAll('player').forEach(item => {
                    console.log(
                        item.querySelector('Name').textContent,
                        item.querySelector('Country').textContent,
                        item.querySelector('Birthday').textContent
                    );
                });
            });
Sie parst XML, kann aber problemlos auf HTML umgeändert werden:
https://developer.mozilla.org/de/docs/Web/API/DOMParser#ein_svg-_oder_html-dokument_parsen
Anschließend kannst Du mit den gängigen Funktionen wie querySelector auf das DOM zugreifen und deine Linkziele prüfen. Versuche, ob Du so zum Ziel kommst und melde dich wieder wenn nicht.
 
Zuletzt bearbeitet:
B

Big Sanch

Member
Beiträge
6
Punkte Reaktionen
0
@Sempervivum

Danke für den Ansatz, ans fetchen hab ich gar net gedacht, ich werd das die Tage gleich versuchen und meld mich wieder.

Und ja, an dem gesamten Projekt ist einiges veraltet, aber die Inhalte wurden glaub vor ca. 8 Jahren erstellt und dauernd erweitert und geupdatet.
Ich habe leider ohne Vorwarnung und ohne vorher nach zu Fragen zugesagt, das Projekt in Zukunft zu verwalten.
Das mach ich in Zukunft ohne mal in das Projekt VORHER rein zu schaun nie wieder :)
 
Thema:

Auslesen eines Links, ob ein Anker vorhanden ist

Oben Unten