Avatar billede mixeren Nybegynder
07. marts 2005 - 01:57 Der er 10 kommentarer og
1 løsning

iframe 2 domæner

Hejsa

Jeg har fundet følgende særdeles smarte script.

<script language="javascript" type="text/javascript">
function ifrHeight(){
  var t=document.body.scrollHeight;
  if(parent!=window)parent.document.getElementById('IFRAMEID').style.height=t+4+'px';
}
</script>
(En roenving fra http://www.eksperten.dk/spm/535274 )

Desværre kan jeg ikke få den til at virke over flere domæner. Jeg skal åbne en side fra et domæne på et andet og får en adgang nægtet. Findes der ikke en eller anden smart måde at undgå det på?
(Skal lige siges at jeg har adgang til at indsætte kode begge steder.)
Avatar billede fennec Nybegynder
07. marts 2005 - 08:16 #1
Af sikkerheds grunde kan man ikke bruge JavaScript på kryds af domæner. Du kan vist slå denne sikkerhed fra i browseren, men det vil jeg ikke anbefale, og medmindre det er til at intranet, får du heller ikke dine brugere til at slå denne sikkerhed fra.
Avatar billede roenving Novice
07. marts 2005 - 10:38 #2
-- den eneste mulighed, jeg kan se, er at bruge en offentlig kilde, nemlig urlen, men den er heller ikke til at finde en ordentlig løsning på, når du vil tilpasse en iframes størrelse til indholdet, da barne-framen jo ikke engang kan se moder-dokumentets url (men kender du den i forvejen, kan man så godt !-)
Avatar billede mixeren Nybegynder
07. marts 2005 - 11:34 #3
Enhver form som kræver at brugerne skal ændre på deres sikkerheds indstillinger er udelukket. Roenving, skal det forståes sådan at hvis jeg kender den præcise adresse på den side iframen sidder på, så kan den puttes i scriptet?

Det er i hvert fald ikke noget problem. Eneste problem er at mine javascript evner kun rækker til at finde gode javascript også lave små tilpasninger, så kunne du lokkes til at lave grydeklar løsning ville jeg være meget taknemlig. Scriptet må meget gerne virke som nu, altså så en reload af iframen igen tilpasser størrelsen.
Avatar billede roenving Novice
07. marts 2005 - 11:57 #4
Du skal så have en to-trinsløsning, hvor du bruger hosstående script i iframen med en lille ændring:

<script language="javascript" type="text/javascript">
function ifrHeight(){
  var t=document.body.scrollHeight;
  if(parent!=window)parent.location.replace('http://urlen.du.kender?ifr='+(t+4));
}
</script>

-- i hovedvinduet skal du så have:

<script type="text/javascript">
window.onload = function(){
  if(location.search&&location.search.indexOf('ifr')>0){
    document.getElementById('IFRAMEID').style.height = location.search.split("=")[1] + 'px';
  }
}
</script>
Avatar billede mixeren Nybegynder
07. marts 2005 - 12:46 #5
Det driller mig godt nok lidt. En direkte kopi dit script hvor eneste ændring er IFRAMEID og url'en virker ikke. Den giver heller ingen fejl, der sker bare ikke noget. Så kikkede jeg på det gamle script, der er jo en "window.onload = ifrHeight;" i den del der sidder i iframen, så den satte jeg ind. Nu vil den godt nok smide ifr=[et tal] i enden af url'en, men iframen står bare og reloader.

Det nok bare mig der er en klummer, men skal "ifrHeight" ikke startes for at virke?
(Er først tilbage sidst på aftenen... )
Avatar billede roenving Novice
07. marts 2005 - 13:01 #6
-- selvfølgelig står kalorius og reloader, hrm ...

-- den må jeg lige tænke lidt over ...
Avatar billede mixeren Nybegynder
18. april 2005 - 00:16 #7
Er du kommet til samme svar som jeg? nemlig at det ikke kan løses på en fornuftig måde?
Avatar billede olebole Juniormester
18. april 2005 - 02:07 #8
<ole>

'bla.html':

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
body, html {
    height: 100%;
    margin: 0px;
    padding: 0px;
}
</style>
</head>
<body>

<iframe id="gnu" src="about:blank"></iframe>

<script type="text/JavaScript">
var fr = document.getElementById("gnu");
if (location.search&&location.search.indexOf("ifr")>0) {
    fr.style.height = location.search.split("=")[1] + "px";
    fr.src = "blabla.html?beenHere";
}
else fr.src = "blabla.html";
</script>

</body>
</html>

-----------------------------------------

'blabla.html':

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
body, html {
    height: 100%;
    margin: 0px;
    padding: 0px;
}
</style>
<script type="text/JavaScript">
window.onload = function() {
    if (parent!=window && location.href.indexOf("beenHere")==-1) {
        h = document.body.scrollHeight+4;
        parent.location.replace("bla.html?ifr="+h);
    }
}
</script>
</head>
<body>

Top
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
Bund

</body>
</html>

- så burde det vist køre  :)

/mvh
</bole>
Avatar billede olebole Juniormester
18. april 2005 - 03:20 #9
- men du skal af hensyn til Mozilla nok bruge:

window.onload = function() {
    if (parent!=window && location.href.indexOf("beenHere")==-1) {
        var h, ua = navigator.userAgent.toLowerCase();
        h = (ua.indexOf("gecko")!=-1 ? document.documentElement.scrollHeight : document.body.scrollHeight) + 4;
        parent.location.replace("bla.html?ifr="+h);
    }
}
Avatar billede mixeren Nybegynder
19. april 2005 - 10:29 #10
Det virker dejligt, så er der noget at lege vidre med. :-)

Smider du lige et svar olebole.
Avatar billede mixeren Nybegynder
06. september 2005 - 00:29 #11
Ja det kan man vil godt betegne som at I ingen point vil have ik'? ;-)
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