Avatar billede bomann Nybegynder
15. september 2006 - 15:11 Der er 20 kommentarer og
1 løsning

Javescript scroll i iframe medfører Adgang nægtet error

På mit site har jeg en iframe der viser indholdet på et andet site.

Hvis jeg loader en side fra mit eget site virker nedenstående

this.frames["framenavn"].scrollBy(0,-50);

Hvis jeg loader en side på nettet virker ovenstående IKKE!
Det giver en script fejl "Adgang nægtet".

Det skyldes, at browseren ikke tillader "cross references" så jeg ikke bare kan tilgå document i iframen når indholdet er fra en "fremmed" side.

Spørgsmålet er så : hvordan laver jeg et script der kan scrolle iframen om og ned uanset om indholdet i iframen er fra mit eget site eller fra en "fremmed" side f.eks. eksperten.dk???
Avatar billede sbm Nybegynder
15. september 2006 - 15:17 #1
Du kan forsøge dig med en iframe i en iframe. Den yderste iframe viser din en URL fra din egen server, som så igen indeholder en iframe hvor den "fremmede" side vises.
Avatar billede sbm Nybegynder
15. september 2006 - 15:17 #2
...så burde det være muligt at scrolle på den yderste iframe...
Avatar billede bomann Nybegynder
15. september 2006 - 21:57 #3
...og så følger den inderste med?
Avatar billede bomann Nybegynder
15. september 2006 - 22:18 #4
Det kan jeg ikke umiddelbart få til at virke. Hvis jeg loader en side fra min egen server i yderste iframe - indeholdende en ny iframe der loader en "fremmed side" -loader inderste iframe slet ikke noget!?

Seudo: minfil1.ydersteiframe(minfil2.indersteiframe(www.eksperten.dk))

Kan du evt. komme med et eksempel?
Avatar billede sbm Nybegynder
15. september 2006 - 23:04 #5
Prøv at åbne den inderste side direkte... Kan du så se noget?

Jeg har lige lavet eksemplet på min egen computer, og den inderste iframe viser fint sit indhold. Jeg brugte så bare Google som prøvekanin.
Avatar billede bomann Nybegynder
16. september 2006 - 10:49 #6
Hvis jeg åbner den inderste direkte virker det fint.
Problemet ligger sandsynligvis i, at jeg kører det fra Visual Studio.
Tester det lige uden om udviklingsmiljøet.
Avatar billede bomann Nybegynder
17. september 2006 - 19:24 #7
Nu får jeg også inderste iframe til at loade src. Det var åbenbart VS der blokerede. Anyway - jeg får stadig ikke mulighed for at scrolle i inderste iframe. Nedenstående er mine to html filer. Jeg er ikke helt sikker på hvad du mener med en iframe i en iframe. Kan jeg få dig til at kigge på mine 2 html filer og se om konstruktionen er som din og evt. poste dit eksempel?


********* INDEX.HTML ************

<html>
<head>
<script language="javascript" type="text/javascript">
<!--
function Button1_onclick() {
    this.frames["outerframe"].scrollBy(0,50);
}
function Button2_onclick() {
    this.frames["outerframe"].document.frames["innerframe"].scrollBy(0,50);
}
// -->
</script>
</head>
<body>
<input id="Button1" style="width: 150px" type="button" value="SCROLL OUTER" language="javascript" onclick="return Button1_onclick()" />
<br clear="all">
<input id="Button2" style="width: 150px" type="button" value="SCROLL INNER" language="javascript" onclick="return Button2_onclick()" />
<br clear="all">
<iframe id="outerframe" name="outerframe" src="test.html" frameborder="1" style="width: 600px; height: 400px">
</iframe>
</body>
</html>

************* TEST.HTML **************
<html>
<head>
</head>
<body>
<iframe id="innerframe" name="innerframe" src="http://www.bt.dk/" security="restricted" frameborder="1" style="width: 600px; height: 400px">
</iframe>
</body>
</html>
Avatar billede sbm Nybegynder
18. september 2006 - 09:25 #8
Jeg tror fejlen ligger i at både din yderste og din inderste iframe er lige store. Så er der jo slet ikke behov for at scrolle, for den yderste iframe kan vise ligeså lidt/meget som den inderste. Den inderste iframe (som viser bt.dk) skal være ligeså høj som det dokument du ønsker at vise. Det vil så være for højt for den yderste iframe, og derfor må man scrolle op og ned for at se det hele.
Avatar billede bomann Nybegynder
18. september 2006 - 09:39 #9
Jeg kan se hvad du mener, men jeg kender jo ikke længden (eller bredden) på det document jeg loader. Jeg kan selvfølgelig bare give højde og bredde på inderste iframe til en "uendelig" høj værdi, men så ser det mystisk ud hvis siden er centreret som f.eks. www.bt.dk
Avatar billede sbm Nybegynder
18. september 2006 - 10:58 #10
Jeg ved at du - af rettighedsmæssige årsager - ikke kan redigere data i et DOM fra et andet domæne, men kan du ikke læse dem heller? I så fald kan du jo dynamisk sætte dokumenthøjden ud fra indholdets højde.

Desuden er det de færreste sider der er centreret vertikalt, men der er en del - som BT - der er centreret horisontalt. Men det burde umiddelbart ikke være noget problem...? Hvis du vel at mærke har en iframe der gør brug af hele bredden, burde BT fremstå i iframen som den ville gøre i et almindeligt browservindue, som du bare har gjort lidt mere fladt / knapt så højt.
Avatar billede sbm Nybegynder
18. september 2006 - 10:59 #11
Hermed forstået, at jeg formoder at du eksempelvis har 100% bredde på din iframe, men højden/længden skal sættes dynamisk.
Avatar billede sbm Nybegynder
18. september 2006 - 11:00 #12
Det kniber med tiden til at lave et eksempel, men hvis det fortsat driller kan jeg gøre et forsøg. Måske engang i aften.
Avatar billede bomann Nybegynder
18. september 2006 - 11:14 #13
Når jeg skriver centreret er det største problem horisontalt.
Lad os bare sige at yderste frame er 800x600 - i sådan et tilfælde vil der højest sandsynligt blive brug for både vertikal og horisontal scroll.

"I så fald kan du jo dynamisk sætte dokumenthøjden ud fra indholdets højde"

Skal jeg så loade dokumentet først, læse dokument højde/bredde (hvis de værdier kan læses) og så loade siden på ny med de aflæste værdier som parametre?

Vil helst være fri for at skulle loade siden flere gange pga. tid...
Avatar billede bomann Nybegynder
18. september 2006 - 11:26 #14
Man kan ikke tilgå

this.frames["outerframe"].document.frames["innerframe"].document.width

det giver også javascript fejl "Adgang nægtet"
Avatar billede sbm Nybegynder
18. september 2006 - 21:53 #15
Hmmm. Jeg har lige siddet og prøvet lidt forskelligt, og jeg må være tilbøjelig til at give dig ret. Jeg mener dog bestemt jeg på et tidspunkt så noget lignende gjort.

Jeg slår på tråden hvis jeg finder det, men her og nu er jeg løbet tør for ideer.

Det er for øvrigt den YDRE iframe du skal forsøge at scrolle med knapperne. Men du skal så stadig have fundet en fornuftig højde til det dokument du har i den inderste side, som viser det eksterne site.
Avatar billede bomann Nybegynder
19. september 2006 - 08:25 #16
Jeg er med på at det er den yderste iframe man skal scrolle. Højden på inderste iframe skal bare være "uendelig" lang - så giver højden ingen problemer. Der skal "bare" findes en måde hvorpå man kan sætte den "rigtige" width på inderste iframe. Tak for hjælpen så langt - det var tæt på...
Avatar billede olebole Juniormester
20. september 2006 - 15:17 #17
<ole>

Du kan under ingen omstændigheder scripte til et dokument fra et andet domæne ... og tak guderne for det. Det ville være en gigantisk sikkerhedsrisiko  ;o)

/mvh
</bole>
Avatar billede bomann Nybegynder
20. september 2006 - 15:24 #18
Nej, det havde jeg også på fornemmelsen da jeg oprettede spørgsmålet - jeg havde læst at cross-reference ikke var muligt. Jeg havde måske håbet at en eller anden havde fundet en "work-around". Jeg er jo ikke interesseret i indholdet af document, men vil bare scrolle et vindue i browseren - det er så desværre ikke muligt...
Avatar billede bomann Nybegynder
20. september 2006 - 15:54 #19
Da jeg ikke kan komme tættere på en løsning, må jeg jo konstatere at det var et dumt spørgsmål. Jeg vælger at bruge iframe i iframe løsningen med de begrænsninger det giver. Det har så givet mig et nyt problem -> http://www.eksperten.dk/spm/733565

sbm : du har egentlig gjort dig fortjent til pointene - så post et svar - ellers bruger jeg selv pointene på spørgsmål 733565
Avatar billede sbm Nybegynder
20. september 2006 - 19:08 #20
Det er helt i orden. Jeg mangler ikke og jeg samler ikke. ;)
Avatar billede bomann Nybegynder
20. september 2006 - 22:27 #21
Okay, så siger jeg mange tak for hjælpen og gemmer dem lidt - jeg skal nok snart få brug for mere ekspert hjælp :)
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