• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Im Quellcode suchen und ersetzen

aJunkie

Mitglied
Hallo Forum,

ich baue gerade eine kleine Firefox-Addon und habe einige Ansätze, kann mich aber noch nicht richtig entscheiden.
Javascript, CSS und HTML-Kentnisse reichen für mein Vorhaben aus.

Was ich gerne machen würde ist, dass manche Websites ganz viele Links im Div-Container mit der ID "content" haben. Die Links haben ein bestimmtes Muster und ich möchte daraus ein paar Parameter, etc. filtern.

Das Problem ist, dass ich innerhalb der ID "content" nach diesen URLs suchen und diese ersetzen muss.
Auf content greife ich so zu:
HTML:
var content = document.getElementById('content');
Außerdem brauche ich prinzipiell die "replace"-Funktion.

Wie würdet ihr das Ganze nun angehen? Kann ich denn den Inhalt von content der replace-Funktion als String/Parameter übergeben? Ich habe vor allem ja mehrere URLs zu ersetzen. Ich brauche sowas wie preg_match_all für JS.

Edit:
Manche Websites haben die von mir zu bearbeitenden Links meistens in Tabellen. Meist ist der Klassenname des <td> auch immer gleich. Vielleicht ist das der elegantere Ansatz?!
PS. Keine Sorge, ich treibe keinen Unfug. Dieses Add-On nutze ich für mich selber, um die nervigen Weiterleitungsseiten ("Sie verlassen jetzt den redaktionellen Bereich... blabla") zu umgehen und direkt zur Website zu gelangen, dessen URL als Parameter im Link angegeben ist.
 
Klar gibt es regex. Aber du kannst auf das Dokument nicht wie auf einen String zugreifen.
Du kannst dir aber alle Links in dem content herauspicken.
Code:
var content = document.getElementById("content");
var links = content.getElementsByTagName("a");
// Die oberen zwei Zeilen kann man auch so zusammenfassen
// var links = document.getElementById("content").getElementsByTagName("a");

Damit hast du ein Array von Links. Du kannst die obere Version natürlich noch mehr einschränken. Zum Beispiel durch einen Klassennamen

Code:
var links = []; // Neues Array für alle links

var elemente = document.getElementById("content").getElementsByClassName("cssklassenname");
for (var i=0; i < elemente.length; i++) {
  // Jedes Element mit der CSS Klasse durchgehen
  var tempLinks = elemente[i].getElementsByTagName("a");
  // Jeden Link hinzufügen
  for(var j=0; j < tempLinks.length; j++) {
    links.push(tempLinks[j]);
  }
}

Am Ende hast du in dem Array mit den Namen links deine gewünschten Links. Diese kannst du nun ganz simpel bearbeiten. Im nächsten Beispiel lass ich mir mal alle Linkziele per alert ausgeben:
Code:
 for(var i=0; i < links.length; i++) {
   alert(links[i].href);
}

Edit:
Übrigens kannst du die Linkziele auch mit einem regulären Ausdruck bearbeiten ;)

Denke das sollte dir helfen. :)
 
Sorry für die späte Antwort.

Ja, Vielen Dank! Ist super und einfacher als ich dachte. Habe zu kompliziert gedacht. ^^ Hat meinem AddOn weitergeholfen.
 
Zurück
Oben