jQuery zum Identifizieren von URLs und Anhängen von Parametern

Lesezeit: 3 Minuten

jQuery zum Identifizieren von URLs und Anhangen von Parametern
DirkDiggler

Dieser jQuery-Code wird als Bookmarklet im WordPress-Editor ausgeführt. Der Bookmarklet-/jQuery-Code bearbeitet den Text im Inhaltsfeld und hängt einen Parameter (z. B. ?parameter) an das Ende der URL an.

Die URL ist immer derselbe Domänenname (z. B. domain.com). Die URL enthält jedoch häufig Verzeichnisse (z. B. domain.com/directory/index.html?parameter). Ich brauche den jQuery-Code zum Anhängen, unabhängig davon, was nach dem Domänennamen steht.

Die komplexeste Situation wäre domain.com/directory/index.html?someotherparameter?parameter. Dieser Inhaltsbereich enthält oft mehr als eine URL, sodass das Skript den gesamten Text durchlaufen muss.

Mein halb funktionierender Code

var url="domain.com";
var append = ' ?parameter ';

$(".wp-editor-area").each(
    function(){
        var haystack = $(this).text();
        $(this).text(haystack.replace(url, url+ append));
    });

Der HTML-Code, der geändert wird

<div id="wp-content-editor-container" class="wp-editor-container"><textarea class="wp-editor-area" rows="10" tabindex="1" cols="40" name="content" id="content">&lt;a title="This is a hyperlink" href="http://domain.com/directory"&gt;This is a hyperlink&lt;/a&gt;</textarea></div>

seine aktuelle Ausgabe

<a title="This is a hyperlink" href="http://domain.com%20?parameter%20/directory">This is a hyperlink</a>

Jsfiddle für die Bequemlichkeit

Beachten Sie, dass meine Ausgabe nicht nach der gesamten URL angehängt wird. Wie kann ich dies für komplexere URLs ändern und ein Dokument durchlaufen, wenn es mehr URLs im Textkörper enthält?

Die einzige relevante und ähnliche Frage, die ich finden konnte, ist diese, aber ich konnte die Ergebnisse nicht duplizieren.

Danke!!

1647398946 839 jQuery zum Identifizieren von URLs und Anhangen von Parametern
Jason Towne

Zuerst, die Geige.

Ihr Beispielcode hat genau das getan, worum Sie ihn gebeten haben. Es ersetzte die 'domain.com' Teil des Strings mit der Domain und Ihren Parametern. Einmal gefunden 'domain.com' es hörte auf, nachzusehen, ob irgendetwas anderes daran befestigt war.

Versuchen Sie statt einer reinen Textersetzung, einen regulären Ausdruck zu verwenden, um URLs innerhalb einer Zeichenfolge zu finden.

Quelle:

<div id="wp-content-editor-container" class="wp-editor-container">
    <textarea class="wp-editor-area" rows="10" tabindex="1" cols="40" name="content" id="content">
        &lt;a title="This is a hyperlink" href="http://domain.com/directory"&gt;This is a hyperlink&lt;/a&gt;
        &lt;a title="This is another hyperlink" href="http://google.com/directory"&gt;This is another hyperlink&lt;/a&gt;        
    </textarea>
</div>​

Javascript:

var url="domain.com";
var append = '?parameter ';

$(".wp-editor-area").each(function() {
    $(this).text(urlify($(this).text()));
});

function urlify(text) {
    var urlRegex = /(\b(https?|ftp|file):\/\/[domain.com][-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(urlRegex, function(url) {
        return url + append;
    })
}​

  • Danke! Das ist fast perfekt … aber ich brauche das Skript nur für eine bestimmte Domäne. Wie würde ich das Skript nur für domain.com und nicht für google.com funktionieren lassen?

    – DirkDiggler

    10. Juli 2012 um 23:39 Uhr


  • @ user1512806 Ich habe den regulären Ausdruck in meiner Antwort aktualisiert, um nur nach URLs von einer bestimmten Domäne zu suchen, wie Sie es angefordert haben. Wenn meine Antwort zur Lösung Ihres Problems beigetragen hat, können Sie sie positiv bewerten und als akzeptierte Antwort markieren, damit andere, die dasselbe Problem haben, viel schneller eine Lösung finden.

    – Jason Towne

    11. Juli 2012 um 14:38 Uhr

  • Es klappt! Ich danke dir sehr! Ich würde Ihre Antwort gerne positiv bewerten, aber ich habe nicht genug Ansehen. Ich habe es aber als richtig markiert. Danke noch einmal!

    – DirkDiggler

    11. Juli 2012 um 14:58 Uhr

  • @ user1512806 Gerne. Obwohl es so aussieht, als hätten Sie genug Ruf, um zu stimmen. Hast du es versucht?

    – Jason Towne

    11. Juli 2012 um 15:01 Uhr


  • ah es funktioniert jetzt! Muss eine Sekunde gedauert haben, um meinen neuen Vertreter zu validieren. Danke!

    – DirkDiggler

    11. Juli 2012 um 15:13 Uhr

1004950cookie-checkjQuery zum Identifizieren von URLs und Anhängen von Parametern

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy