Autor Zpráva
tester
Profil *
Máte nějaký nápad jak to udělat když potřebuju zaměnit adresy v src a href (především u obrázku a linků) tak aby místo relativních odkazů byly absolutní odkazy?

předpokládám že mám var host = www.stranka.cz; var innerhtml = "..." // jakékoliv html, může obsahovat třeba seznam článků.

Používám JQuery a v současnosti používám toto:
$("div#content").append(innerhtml);

Do panelu se vloží html, ale obrázky se nezobrazí protože pochází z jiné stránky. Když tedy dodám proměnnou host, jak to udělat? Zdá se mi že dělat parsování je zbytečné. Možná přidat innerhtml do dočasného elementu div#temp, který není součástí stránky a tento element projít pomocí JQuery? Vytvořit příkaz na hledání tagů a, img nebo frame/iframe a jiné tagy které by mohly obsahovat odkaz a jak bude zdroj nahrazen tak přesunout obsah tagu div#temp do div#content?
juriad
Profil
Můžeš to nahrazení provést až po vložení:
Živá ukázka

(href se provede úplně stejně)
tester
Profil *
Díky moc, jsem netušil že je to až tak jednoduché.
tester
Profil *
Jak zjistit jestli se jedná o relativní adresu? Nejdříve jsem si myslel že zkontroluju jestli je na začátku lomítko ale tvůj příklad zrovna ukazují situaci, že lomítko tam být nemusí a přesto to bude relativní.
juriad
Profil
Asi bych na to šel pomocí iframe a tagu base: Živá ukázka
Vytvoří iframe, ve kterém nasimuluje původní hostitelské prostředí a upraví adresy tak, aby posovaly, následně je celý obsah přenesen do původní lokality.
Pozor na to, že skripty, které jsou v tom html stringu se spustí v iframe a nikoli ve stránce (nadpis není červený).
tester
Profil *
Díky. O tom tagu jsem ještě neslyšel, ale přivedlo mě to k jednoduššímu řešení:
$("html > body").append('<base href="' + package.host + '">');
Vkládat iframe se mi zdálo zbytečné. Obrázky fungují a odkazy vlastně taky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0