2009-08-26 12 views
0

Dies ist wahrscheinlich eine dumme Frage, aber ich bin mit jquery.load() und Registerkarten des JQuery UI .. die Seiten, die ich dort laden im Detail Links haben, die in ihnen wieFix Unterbrochene Verbindungen mit JQuery

bezüglich
<a href="mypage.html">link</a> 

So sagen meine Haupt-Seite myserver.com/rootdir/DefaultTabs.asp ist wenn also die Seite, die ich lade ich in myserver.com/rootdir/dir1/page1.html ist dann, wenn ich es in die Tab laden sie es ist ein defekter Link, der aussieht wie myserver.com/rootdir/page1.html

So wie ich zum Beispiel alle Links auf der Seite ersetzen, um das Recht zu zeigen Verzeichnis, aber ersetzen Sie den Link nicht, wenn es bereits ein absoluter Link ist. (Zum Beispiel am Ende jeder Seite habe ich myserver.com/rootdir/prefs/EditTab.asp, die ich noch arbeiten möchte)

Vielen Dank. Ich wage mich kaum in Jquery und sehr zurück. Ich habe mit dieser ein paar Stunden zu kämpfen und haben starts versucht, innerhalb divs/Klassen usw. suchen

Ich weiß, ich bin das Konzept der jquery Verkettungs/Erkenntnis fehlt, aber ...

Antwort

1

Ich bin auf dieses Problem gestoßen und der einzige Weg, den ich gefunden habe, um Dinge zum Laufen zu bringen, ist, Links immer absolut zu machen ... hoffe, dass jemand anders einen besseren Weg hat.

+0

nicht der einzige Weg, obwohl –

0

Nicht sicher, ob dies etwas ist, das nützlich sein könnte, aber haben Sie eine dynamische Javascript-Datei berücksichtigt?

diese Weise können Sie PHP und erhalten Sie die $ _SERVER Variablen ...

<?php header('Content-Type: application/javascript'); ?> 

Legen Sie die oben an der Spitze einer Datei namens "dynamic-javascript.js.php" verwenden können. Gehen Sie voran und fügen Sie Ihren jquery Code darunter hinzu, der in PHP einspringt, wenn Sie für die PATHs benötigen.

Um die Datei auszuführen/einzuschließen, fügen Sie sie einfach an den Anfang Ihres HTML-Dokuments, wie Sie es normalerweise mit einer .js-Datei tun würden.

Shot in der Dunkelheit, die ich weiß ... aber es hat mich aus ein paar Gurken, wenn es um URLs und Pfaden in Javascript-Dateien.

Viel Glück!

Tom

+0

ich bereits dies zu tun, und ich erwarte dies zu verwenden, um die zu handhaben dir1 vs dir2 Typ Problem. dh tab1 ist in dir1, tab2 ist in dir2. Tabs.asp ist die "äußere Seite" in rootdir. Daher versuchen alle relativen Links vom Typ "file1.asp", rootdir anstelle von rootdir/dir1 oder rootdir/dir2 für Ihre Antworten zu laden. –

8

Vielleicht ist die Antwort ist <base href="http://myserver.com/rootdir/dir1"> auf die <head> der Dokumente hinzufügen, die Sie in den Registerkarten geladen werden.

Ich erwarte, dass Sie dies auf der Seite des Browsers mit JQuery oder etwas ähnliches tun können. Wenn nicht, sollte es eine kleine Änderung an den serverseitigen JSPs (oder was auch immer) sein, die die Seiten rendern.

+0

Ich war aufgeregt, aber das funktioniert nicht. (Es funktioniert, wenn die Seite eigenständig ausgeführt wird, aber wenn die Seite mit jquery im div einer anderen Seite geladen wird, funktioniert sie nicht. (Z. B. rootdir/tabs.asp lädt rootdir/dir1/tab1.asp, das eine Verknüpfung zu detail1.asp in dir1) –

+0

Die müsste in der äußersten für das DOM sein, wie der Browser es sieht.Ich sollte angeben, dass ich nicht JQuery verwenden.Das Element in einem ist die Standard-HTML-Methode zu relocate relative href URLs in einem Dokument. –

1

Etwas Ähnliches sollte helfen. Es verwendet reguläre Ausdrücke, die Sie erstellen können, um genau Ihre Bedürfnisse zu erfüllen. Ich habe das nicht getestet, aber der reguläre Ausdruck soll Fälle erkennen, in denen die URL nicht mit einem absoluten Pfadindikator beginnt.

$('a', context).foreach(function() { 
    var link = $(this); 
    var linkText = $(this).attr('href'); 
    if (null == linkText.match(/^([\\\/])|([^\\\/]*\:)/)) { 
     // It's not an absolute url, so fix it. 
     linkText = '\\root\\path\\here\\' + linkText; 
     link.attr('href', linkText); 
    } 
}); 
2

Machen Sie Ihre Links absolut:

<a href="/mypage.html">link</a> 

Statt:

<a href="mypage.html">link</a>