/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Skjul og vis <div> i et iFrame?
Fra : Ace


Dato : 06-09-10 14:02

Hej

Er det muligt, at sjule og vise et <div> i et iFrame, ved brug at
onClick på "hovedsiden" (den side der indeholder iFrame'et)?.. og
i givet fald, hvordan?

Jeg har et <div> på min side, som jeg gerne vil have, at når der
trykkes på det, så skjuler eller viser et bestemt <div> som
befinder sig i et iFrame på siden. Jeg havde håbet, at man kunne
gøre noget a la;

page1.htm:
<html>
<head>
</head>
<!--VISER LAYER VED KLIK-->
<script type="text/javascript">
function show(id) {
if (document.getElementById) {
var el = document.getElementById(id);
el.style.display = (el.style.display = 'block');}}
</script>

<!--SKJULER LAYER VED KLIK-->
<script type="text/javascript">
function hide(id) {
if (document.getElementById) {
var el = document.getElementById(id);
el.style.display = (el.style.display = 'none');}}
</script>
<body>
<div onClick="document.iframe1.show('div1');">Vis DIV</div>
<div onClick="document.iframe1.hide('div1');">Skjul DIV</div>
<iframe name="iframe1" src="page2.htm"><iframe>
</body>
</html>

page2.htm:
<html>
<head>
<!--VISER LAYER VED KLIK-->
<script type="text/javascript">
function show(id) {
if (document.getElementById) {
var el = document.getElementById(id);
el.style.display = (el.style.display = 'block');}}
</script>

<!--SKJULER LAYER VED KLIK-->
<script type="text/javascript">
function hide(id) {
if (document.getElementById) {
var el = document.getElementById(id);
el.style.display = (el.style.display = 'none');}}
</script>
</head>
<body>
<div id="div1" style="width:100%; height:100%;
background-color:green; display:none;"></div>
</body>
</html>

.. men så nemt er det åbenbart ikke :(

Håber der er nogen der kan hjælpe mig.

Venligst
Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Allan Vebel (06-09-2010)
Kommentar
Fra : Allan Vebel


Dato : 06-09-10 16:53

Ace skrev:

> Er det muligt, at sjule og vise et <div>

Prøv at kigge på
http://webdesign101.dk/web102/dhtml/dhtmlapi/universalfunktioner.php

Der er flere sektioner med forskellig måde at
gøre det på.

--
Allan Vebel
http://vebel.dk | http://html-faq.dk
http://webdesigngruppen.dk



Jørgen Farum Jensen (07-09-2010)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 07-09-10 17:04

Allan Vebel skrev:
> Ace skrev:
>
>> Er det muligt, at sjule og vise et <div>
>
> Prøv at kigge på
> http://webdesign101.dk/web102/dhtml/dhtmlapi/universalfunktioner.php

En noget nyere version af det samme princip
findes her:
http://webdesign101.dk/javascript/visogskjul.php

Men det er nødvendigt at læse Birgers indlæg
for at "få fat" i iframe-elementet.


--
Jørgen Farum Jensen
http://webdesign101.dk
..

Allan Vebel (07-09-2010)
Kommentar
Fra : Allan Vebel


Dato : 07-09-10 20:30

Jørgen Farum Jensen skrev:

> Men det er nødvendigt at læse Birgers indlæg
> for at "få fat" i iframe-elementet.

Også hvis man laver funktionen direkte på den side
der bliver hentet ind i <iframe>?

Jeg ville nok lave noget include i stedet.

--
Allan Vebel
http://vebel.dk | http://html-faq.dk
http://webdesigngruppen.dk



Birger Sørensen (07-09-2010)
Kommentar
Fra : Birger Sørensen


Dato : 07-09-10 21:37

Allan Vebel frembragte:
> Jørgen Farum Jensen skrev:
>
>> Men det er nødvendigt at læse Birgers indlæg
>> for at "få fat" i iframe-elementet.
>
> Også hvis man laver funktionen direkte på den side
> der bliver hentet ind i <iframe>?
>
> Jeg ville nok lave noget include i stedet.

Som jeg forstår indlægget, er spørsmålet hvordan man fra
hoveddokumentet når til elementer i iframen. Linkene der starter
begivenhederne findes i hoveddokumentet, og Eventen starter altså der,
hvorfor programmeringen også starte der.
Hvis eventen starter i iframen, vil den tilhørende programmering også
skulle startes der - hvilket ville være som det er helt normalt.

Det omvendte skal også kunne lade sig gøre - fra iframen at manipulere
elementer i hoveddikoumentet - man skal da bruge iframens
window.parent.document for at finde elementerne.

Jeg ville i alle tilfælde vælge en løsning uden iframen, hvis det
overhovedet er muligt.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Allan Vebel (07-09-2010)
Kommentar
Fra : Allan Vebel


Dato : 07-09-10 22:06

Birger Sørensen skrev:

> Jeg ville i alle tilfælde vælge en løsning uden
> iframen, hvis det overhovedet er muligt.

Det er altid muligt, men brugeren kan af en eller
anden grund ønske at hente en fremmed side
ind i sin <iframe>.

Det fremfår ikke af spørgsmålet om det er en
<iframe> på egen side (ellers vil jeg foreslå en
anden måde at gøre det på), eller en fremmed
side.

En fremmed side i en <iframe> skal man i øvrigt
passe på med at manipulere med, på den måde
der beskrives - det kan der komme en hel masse
problemer ud af - især hvis det drejer sig om vis/
skjul af elementer.

Bliver en af mine sider manipuleret på den måde,
er der tale om en strafbar handling.

--
Allan Vebel
http://vebel.dk | http://html-faq.dk
http://webdesigngruppen.dk



Birger Sørensen (08-09-2010)
Kommentar
Fra : Birger Sørensen


Dato : 08-09-10 01:23

Allan Vebel formulerede tirsdag:
> Birger Sørensen skrev:
>
>> Jeg ville i alle tilfælde vælge en løsning uden
>> iframen, hvis det overhovedet er muligt.
>
> Det er altid muligt, men brugeren kan af en eller
> anden grund ønske at hente en fremmed side
> ind i sin <iframe>.
>
> Det fremfår ikke af spørgsmålet om det er en
> <iframe> på egen side (ellers vil jeg foreslå en
> anden måde at gøre det på), eller en fremmed
> side.
>
> En fremmed side i en <iframe> skal man i øvrigt
> passe på med at manipulere med, på den måde
> der beskrives - det kan der komme en hel masse
> problemer ud af - især hvis det drejer sig om vis/
> skjul af elementer.
>
> Bliver en af mine sider manipuleret på den måde,
> er der tale om en strafbar handling.

Måske ikke tilstrækkeligt tydeliggjort, men ovenstående vil kun
fungere, hvis hovedside og indhold af iframe er fra samme domæne.

Ellers skal der noget helt andet til, med meddelelser på tværs af
domæner, og det er alt andet end simpelt. Der arbejdes med at gøre den
slags enklere i HTML5, men om og evt. hvilke browsere der har de ting
implementeret, er ikke lige til at finde ud af (bortset fra en "prøv
det" test). Så det er under alle omstændigheder ikke noget der kan
anvendes til sider der skal offentliggøres, endnu.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (06-09-2010)
Kommentar
Fra : Birger Sørensen


Dato : 06-09-10 22:58

Ace forklarede den 06-09-2010:
> Hej
>
> Er det muligt, at sjule og vise et <div> i et iFrame, ved brug at
> onClick på "hovedsiden" (den side der indeholder iFrame'et)?.. og
> i givet fald, hvordan?
>
> Jeg har et <div> på min side, som jeg gerne vil have, at når der
> trykkes på det, så skjuler eller viser et bestemt <div> som
> befinder sig i et iFrame på siden. Jeg havde håbet, at man kunne
> gøre noget a la;
>
> page1.htm:
> <html>
> <head>
> </head>
> <!--VISER LAYER VED KLIK-->
> <script type="text/javascript">
> function show(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'block');}}
> </script>
>
> <!--SKJULER LAYER VED KLIK-->
> <script type="text/javascript">
> function hide(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'none');}}
> </script>
> <body>
> <div onClick="document.iframe1.show('div1');">Vis DIV</div>
> <div onClick="document.iframe1.hide('div1');">Skjul DIV</div>
> <iframe name="iframe1" src="page2.htm"><iframe>
> </body>
> </html>
>
> page2.htm:
> <html>
> <head>
> <!--VISER LAYER VED KLIK-->
> <script type="text/javascript">
> function show(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'block');}}
> </script>
>
> <!--SKJULER LAYER VED KLIK-->
> <script type="text/javascript">
> function hide(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'none');}}
> </script>
> </head>
> <body>
> <div id="div1" style="width:100%; height:100%;
> background-color:green; display:none;"></div>
> </body>
> </html>
>
> . men så nemt er det åbenbart ikke :(
>
> Håber der er nogen der kan hjælpe mig.
>
> Venligst
> Ace

Umiddelbart kan det ikke lade sig gøre at programmeret til et dokument
fra et andet.
Den side du henter ind i iframe, har sit eget dokument, og det er
derfor ikke den rigtige document variable du anvender ved
programmeringen.
Man kan godt - men det er ret tricky - svjh, noget med at en funktion i
dokumentet på hovedsiden skal kalde en funktion på iframe-siden. Og
denne cross dokument programmering, er kun tilladt i helt specielle
tilfælde (sikkerhed).
Umiddelbart er det nok nemmere (og mere fremtidssikret), at designe
uden iframen.


Du kan prøve at give din iframe en id, og bruge den som referance for
dokumentet.
function hide(id) {
var min_frame = document.getElementById( 'min_iframe');
var el = min_frame.contentWindow.document.getElementById( '');
el.style.display = 'none';
}
Ved ikke om det er crossbrowser, eller hvor meget bagud kompatibelt det
er, men burde vist være det nogenlunde - og det kræver at begge sider
ligger på samme domæne.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



PostMan (08-09-2010)
Kommentar
Fra : PostMan


Dato : 08-09-10 07:28

Ace har bragt dette til os:
> Hej
>
> Er det muligt, at sjule og vise et <div> i et iFrame, ved brug at
> onClick på "hovedsiden" (den side der indeholder iFrame'et)?.. og
> i givet fald, hvordan?
>
> Jeg har et <div> på min side, som jeg gerne vil have, at når der
> trykkes på det, så skjuler eller viser et bestemt <div> som
> befinder sig i et iFrame på siden. Jeg havde håbet, at man kunne
> gøre noget a la;
>
> page1.htm:
> <html>
> <head>
> </head>
> <!--VISER LAYER VED KLIK-->
> <script type="text/javascript">
> function show(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'block');}}
> </script>
>
> <!--SKJULER LAYER VED KLIK-->
> <script type="text/javascript">
> function hide(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'none');}}
> </script>
> <body>
> <div onClick="document.iframe1.show('div1');">Vis DIV</div>
> <div onClick="document.iframe1.hide('div1');">Skjul DIV</div>
> <iframe name="iframe1" src="page2.htm"><iframe>
> </body>
> </html>
>
> page2.htm:
> <html>
> <head>
> <!--VISER LAYER VED KLIK-->
> <script type="text/javascript">
> function show(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'block');}}
> </script>
>
> <!--SKJULER LAYER VED KLIK-->
> <script type="text/javascript">
> function hide(id) {
> if (document.getElementById) {
> var el = document.getElementById(id);
> el.style.display = (el.style.display = 'none');}}
> </script>
> </head>
> <body>
> <div id="div1" style="width:100%; height:100%;
> background-color:green; display:none;"></div>
> </body>
> </html>
>
> . men så nemt er det åbenbart ikke :(
>
> Håber der er nogen der kan hjælpe mig.
>
> Venligst
> Ace

Hejsa

Jeg ville bruge et jQuery plugin til at gøre det med f.eks den her.
http://meerkat.jarodtaylor.com/demo/basic-usage/

Vh

PostMan



Birger Sørensen (08-09-2010)
Kommentar
Fra : Birger Sørensen


Dato : 08-09-10 10:01

PostMan skrev den 08-09-2010:
> Ace har bragt dette til os:
>> Hej
>>
>> Er det muligt, at sjule og vise et <div> i et iFrame, ved brug at
>> onClick på "hovedsiden" (den side der indeholder iFrame'et)?.. og
>> i givet fald, hvordan?
>>
>> Jeg har et <div> på min side, som jeg gerne vil have, at når der
>> trykkes på det, så skjuler eller viser et bestemt <div> som
>> befinder sig i et iFrame på siden. Jeg havde håbet, at man kunne
>> gøre noget a la;
>>
>> page1.htm:
>> <html>
>> <head>
>> </head>
>> <!--VISER LAYER VED KLIK-->
>> <script type="text/javascript"> function show(id) { if
>> (document.getElementById) { var el = document.getElementById(id);
>> el.style.display = (el.style.display = 'block');}}
>> </script>
>>
>> <!--SKJULER LAYER VED KLIK-->
>> <script type="text/javascript"> function hide(id) { if
>> (document.getElementById) { var el = document.getElementById(id);
>> el.style.display = (el.style.display = 'none');}}
>> </script>
>> <body>
>> <div onClick="document.iframe1.show('div1');">Vis DIV</div>
>> <div onClick="document.iframe1.hide('div1');">Skjul DIV</div>
>> <iframe name="iframe1" src="page2.htm"><iframe>
>> </body>
>> </html>
>>
>> page2.htm:
>> <html>
>> <head>
>> <!--VISER LAYER VED KLIK-->
>> <script type="text/javascript"> function show(id) { if
>> (document.getElementById) { var el = document.getElementById(id);
>> el.style.display = (el.style.display = 'block');}}
>> </script>
>>
>> <!--SKJULER LAYER VED KLIK-->
>> <script type="text/javascript"> function hide(id) { if
>> (document.getElementById) { var el = document.getElementById(id);
>> el.style.display = (el.style.display = 'none');}}
>> </script>
>> </head>
>> <body>
>> <div id="div1" style="width:100%; height:100%;
>> background-color:green; display:none;"></div>
>> </body>
>> </html>
>>
>> . men så nemt er det åbenbart ikke :(
>>
>> Håber der er nogen der kan hjælpe mig.
>>
>> Venligst
>> Ace
>
> Hejsa
>
> Jeg ville bruge et jQuery plugin til at gøre det med f.eks den her.
> http://meerkat.jarodtaylor.com/demo/basic-usage/
>
> Vh
>
> PostMan

Jo. Lad os da bruge al den båndbredde, til en masse vi alligevel ikke
skal bruge til noget...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Martin Larsen (08-09-2010)
Kommentar
Fra : Martin Larsen


Dato : 08-09-10 10:30

Birger Sørensen wrote:

> Jo. Lad os da bruge al den båndbredde, til en masse vi alligevel ikke
> skal bruge til noget...

Hold nu op!

Vi *har* altså forstået at du har et anstrengt forhold til jQuery. Som
udgangspunkt har du jo ingen ide om hvad OP egentligt har brug af
features, du har derfor ingen belæg for at køre dit båndbredde-korstog.
Det må være OP selv der skal afgøre om han vil bruge javascript-biblioteker.

Du kan jo bare lave et greasemonkey-script der blokerer alle sider der
bruger jQuery. Så går det ikke ud over din dyrebare båndbredde.

Martin

Birger Sørensen (08-09-2010)
Kommentar
Fra : Birger Sørensen


Dato : 08-09-10 14:54

Martin Larsen formulerede spørgsmålet:
> Birger Sørensen wrote:
>
>> Jo. Lad os da bruge al den båndbredde, til en masse vi alligevel ikke
>> skal bruge til noget...
>
> Hold nu op!
>
> Vi *har* altså forstået at du har et anstrengt forhold til jQuery. Som
> udgangspunkt har du jo ingen ide om hvad OP egentligt har brug af features,
> du har derfor ingen belæg for at køre dit båndbredde-korstog. Det må være OP
> selv der skal afgøre om han vil bruge javascript-biblioteker.
>
> Du kan jo bare lave et greasemonkey-script der blokerer alle sider der bruger
> jQuery. Så går det ikke ud over din dyrebare båndbredde.
>
> Martin

Der er tale om to små funktioner, som spørgeren selv kan skrive på 2X3
linier.
Ingen tvivl om at det kan lade sig gøre med JQueri og det angivne
modul.

Vi blev ikke bedt om at optimere al spørgerens kode, og det kan da godt
være, at det i sidste ende kan svare sig at bruge andre programmørers
moduler. Det lærer han så bare ikke så meget js af. Og spøgsmålet gik
så faktisk på hvordan man cross-dokument programmerer i js - ikke
hvordan man undgår at programmere selv.
Men nu har han jo fået begge svarene - både hvordan man gør det selv,
og et forlag til moduler han måske kan bruge, så han ikke behøver tænke
selv.

Man kan helt sikkert også bruge rendegravere til at luge i
staudebedene.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Martin Larsen (08-09-2010)
Kommentar
Fra : Martin Larsen


Dato : 08-09-10 19:43

Hej Birger

> Det lærer han så bare ikke så meget js af. Og spøgsmålet gik så
> faktisk på hvordan man cross-dokument programmerer i js - ikke hvordan
> man undgår at programmere selv.
> Men nu har han jo fået begge svarene - både hvordan man gør det selv, og
> et forlag til moduler han måske kan bruge, så han ikke behøver tænke selv.

Grundlæggende er jeg helt enig i at han fx lærer mere ved at lave det
fra bunden. Det har vi også snakket om før i den lange tråd for længe
siden, som du nok husker.

Det jeg reagerer på er din spidse kommentar:

"Jo. Lad os da bruge al den båndbredde, til en masse vi alligevel ikke
skal bruge til noget... "

Hvad formål tjener den kommentar?

Og apropos båndbredde, har du så tænkt på hvor meget spild af båndbredde
DU påfører os andre ved at quote hele pivtøjet når du svarer på et
indlæg

Hilsen
Martin

Birger Sørensen (08-09-2010)
Kommentar
Fra : Birger Sørensen


Dato : 08-09-10 20:08

Den 08-09-2010, skrev Martin Larsen:
> Grundlæggende er jeg helt enig i at han fx lærer mere ved at lave det fra
> bunden. Det har vi også snakket om før i den lange tråd for længe siden, som
> du nok husker.

8-o Jo - og lad os henvise andre til den, hvis de vil vide mere...

> Det jeg reagerer på er din spidse kommentar:
> "Jo. Lad os da bruge al den båndbredde, til en masse vi alligevel ikke skal
> bruge til noget... "
> Hvad formål tjener den kommentar?

Jo. Jeg bruger min tid på at finde dokumentation og forklare.
Postman mener det er nemmer at hente 32Kb+ et ekstra modul for at
erstatte 6 liniers kode - og slipper så for at tænke selv, eller
forklare noget som helst.
I relation til spørgsmålet er det irrelevant - og en ret så dårlig
løsning, der ikke svarer på det der egentlig bliver spurgt om.
Hvad er så meningen med den? - hvis vi ser bort fra reklame for JQuery,
og andre mere eller mindre brugbare halve løsninger.

> Og apropos båndbredde, har du så tænkt på hvor meget spild af båndbredde DU
> påfører os andre ved at quote hele pivtøjet når du svarer på et indlæg

Det gør jeg - men som regel for sent :/
Skal nok prøve at forbedre mig!

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Martin (08-09-2010)
Kommentar
Fra : Martin


Dato : 08-09-10 14:28

On 08-09-2010 11:00, Birger Sørensen wrote:
> Jo. Lad os da bruge al den båndbredde, til en masse vi alligevel ikke
> skal bruge til noget...

Hva skal vi ellers bruge den til?

Det er da alt for dyrt at have routeren stå tændt hele tiden og den så
ikke laver noget.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste