Avatar billede dramsgaard Nybegynder
08. december 2005 - 21:25 Der er 8 kommentarer og
1 løsning

link til Iframe fra en anden webside

jeg har en webside der indeholder en iframe. Mit problem er at jeg skal linke til den iframe fra en anden webside end den iframen er på.

jeg har fundet flg. kode til at løse problemet:
<script type="text/javascript">
<!--
window.onload=function(){
  h = location.hash.substring(1)
  if(h.length>0)document.getElementById("content").src = h;
}
//-->
</script>

også med et link som:
<a href="../default.asp#http://www.google.dk/" >

det virker fint nok, men hvis mit link indeholder et spørgsmålstegn virker det ikke...altså noget lignende:

<a href="../default.asp#http://www.etEllerAndet.dk/default.asp?area=test" >

er der nogen der har en løsning på det??
Avatar billede hr__hallandsen Nybegynder
09. december 2005 - 09:59 #1
Ka du bruge det her?

<script type=text/javascript>
onload = function(){
  if(location.search){
    src = unescape(location.search);
    if(src.substring(1, 6) == "site=" && src.substring(6).length > 0)
      document.getElementById("content").src = src.substring(6);
  }
}
</script>

Du skal bare skrive "?site=" efter den adresse scriptet skal bruges på, og så skrive, hvilken side, som skal vises i iframen bagefter fx

http://hallandsen.com/?site=http://nesdnallah.dk?id=15788

Her vil iframen på siden http://hallandsen.com/ vise siden med adressen http://nesdnallah.dk?id=15788
Avatar billede hr__hallandsen Nybegynder
09. december 2005 - 13:19 #2
Eller endnu bedre, hvis du vil sikre dig, at du kan sende andre parametre end site-parametren, og hvis du vil sikre dig, at document.getElementById("content").src ikke sættes til noget, hvis site-parameteren er tom

<script type=text/javascript>
onload = function(){
  if(location.search){
    if(location.search.substring(1).indexOf("site=") >= 0){
      var src = (location.search.substring(1).indexOf("site=") == 0) ? 0 : (location.search.substring(1).indexOf("&site=") + 1);
      src = (location.search.substring(src + 6).indexOf("&") >= 0) ? location.search.substring(src + 6).substring(0,
      location.search.substring(src + 6).indexOf("&")) : location.search.substring(src + 6);
      if(src.length > 0)
        document.getElementById("content").src = src;
    }
  }
}
</script>
Avatar billede hr__hallandsen Nybegynder
09. december 2005 - 13:54 #3
Ups

Glemte lige unscape:

        document.getElementById("content").src = unescape(src);
Avatar billede dramsgaard Nybegynder
09. december 2005 - 19:35 #4
hvor siger du at
document.getElementById("content").src = unescape(src);
skal ind??

jeg har desværre ikke tid til at se på det lige nu...men ser på det senere i dag eller i morgen tidlig :)
Avatar billede hr__hallandsen Nybegynder
12. december 2005 - 09:56 #5
Det skal bare ind i <HEAD>.

Husk at skrive den adresse, der skal vises i iframen, som "escaped" ved både det første og andet script, jeg har vist. Det er ikke altid nødvendigt, men så er du i hvert fald på den sikre side.
Du kan finde ud af, hvad du skal skrive ved at indtaste følgende i browserens adresselinje:

java script:document.write(escape("http://www.*.com"))

"http://www.*.com" indikerer adressen, som skal vises i iframen. Så er det bare om at kopiere det, browseren udskriver og sætte det ind.

Hvis du foretrækker dit gamle script virker det fint med adresser med spørgsmålstegn, bare adressen også her skrives escaped. Jeg finder dog ikke metoden optimal, da den ødelægger fidusen med bogmærker på siden. Hvis man linker til et bogmærke vil dets navn jo blive forsøgt vist som en side i iframen.
Avatar billede hr__hallandsen Nybegynder
12. december 2005 - 15:06 #6
Har lige forbedret scriptet lidt:

<script type=text/javascript>
onload = function(){
  if(location.search){
    src = -1;
    if(location.search.substring(1).indexOf("site=") >= 0){
      if(location.search.substring(1).indexOf("site=") == 0)
        var src = 0;
      else if(location.search.substring(1).indexOf("&site=") >= 0)
        var src = location.search.substring(1).indexOf("&site=") + 1;
      if(src >= 0)
        if(location.search.substring(src + 6).indexOf("&") >= 0){
          for(i = location.search.substring(src + 6).indexOf("&"); true; i++)
            if(location.search.substring(src + 6 + i, src + 7 + i) != "&"){
              alert(location.search.substring(src + 6, src + 5 + i))
              break;
            }
        }
        else
          src = location.search.substring(src + 6);
      if(src.length > 0)
        document.getElementById("content").src = unescape(src);
    }
  }
}
</script>
Avatar billede hr__hallandsen Nybegynder
12. december 2005 - 15:09 #7
Hov...!

              alert(location.search.substring(src + 6, src + 5 + i))

skal da erstattes af
              src = location.search.substring(src + 6, src + 5 + i);
Avatar billede dramsgaard Nybegynder
12. december 2005 - 21:43 #8
hej hr__hallandsen

tak for dit forslag...jeg ser på det i morgen aften....det er jo eksamens tid :)
Avatar billede hr__hallandsen Nybegynder
13. december 2005 - 08:20 #9
VENT

Der bør da stå "var" foran "src = -1;", og de andre "var"'er foran "src" skal slettes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester