[JS] IFrame content wijzigen zonder src aan te passen

Pagina: 1
Acties:

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Hallo allen,

Ik wil optimaal gebruik maken van de ruimte op mijn website door gebruik te maken van IFrames. Wat ik wil is als volgt:
- In het IFrame laatste 3 news headlines tonen. (Headlines worden dynamisch gegenereerd via een PHP script)
- Daarna in het iframe een banner tonen
- Daarna weer headlines tonen. Dus de content van het iframe moet continu veranderen.

Eerst heb ik even op Hotscripts gezocht voor een voorbeeldje:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<script language="JavaScript1.2">
//Daily iframe content- _ Dynamic Drive (www.dynamicdrive.com)
var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1
var dom=document.getElementById&&navigator.userAgent.indexOf("Opera")==-1

//Specify IFRAME display attributes
var iframeprops='width=275 height=195 marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="1" scrolling="no"'

//Specify 7 URLs to display inside iframe, one for each day of week
var daycontent=new Array()
daycontent[1]="monday.htm" //Monday content
daycontent[2]="tuesday.htm" //Tuesday content
daycontent[3]="wednesday.htm"
daycontent[4]="thursday.htm"
daycontent[5]="friday.htm"
daycontent[6]="saturday.htm"
daycontent[0]="sunday.htm"

//No need to edit after here
if (ie||dom) {
    document.write('<iframe id="dynstuff" src="" '+iframeprops+'></iframe>')
}

function dayofweek_iframe(){
    var mydate=new Date()
    var mytoday=mydate.getDay()
    
    if (ie||dom){
        var iframeobj=document.getElementById? document.getElementById("dynstuff") : document.all.dynstuff
        iframeobj.src=daycontent[mytoday]
    }
}

setInterval("dayofweek_iframe()", 2000);
</script>


Dit voorbeeldje zal via een javascript interval van 2 seconden elke keer het IFrame refreshen en daarin de weekdag tonen. Dit werkt prima als ik bijv. mijn systeemtijd aanpas zie ik ook de dag in het iframe veranderen.

Wat is nu het probleem :?
De content van het frame wordt aangepast door de src van het iframe te laten wijzen naar een htm file, maar aangezien ik een dynamische PHP website heb zal ik dit naar een PHP script kunnen laten verwijzen.

Wat ik zou kunnen doen is als volgt steeds het src attribuut aan te passen naar:
JavaScript:
1
2
.src = random.php?show=headlines
.src = random.php?show=banner


Echter lijkt me ivm met de serverload niet echt aan te raden om om de 2 seconden steeds een PHP script aan te gaan roepen. Ik kan het PHP script natuurlijk deze zaken laten cachen in een htm file, maar ik wil het liefst alles dynamisch houden.

Wat wil ik nou :?
Ik wil in het PHP script gelijk de html van de headlines schrijven en de html van de banner, zodat ik niet steeds van de server de content opnieuw hoef op te halen.
Nu wilde ik via document.write in het IFrame schrijven, maar dat werkt dus niet goed in alle browsers.

Hoe moet ik dit probleem gaan aanpakken, hebben jullie suggesties?

P.S: Ik weet dat dit ook met Flash te doen is, maar mijn flash kennis rijkt niet ver en ik ben liever niet afhankelijk van plugins.

It’s nice to be important but it’s more important to be nice


Verwijderd

Geen Iframe gebruiken.
Een iframe heeft geen voordelen boven een DIV met scrollbars.

Maak een Div met scrollbars en zet daarvoor steeds de innerHTML.
Das een makkelijke schone oplossing.

Iframe heeft teveel nadelen (vind ik persoonlijk), daarom gebruik ik het ook niet.

Ik hoop dat je er iets aan heb.

Of wat je kan doen is een XML file maken, die op de server opslaan, en deze gewoon parsen doormiddel van jscript.

Die XML file laat je dan gewoon bijv om de minuut maken door de server.
Das nog wel te doen denk ik

[ Voor 27% gewijzigd door Verwijderd op 07-11-2003 12:10 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 17:43

crisp

Devver

Pixelated

waarom sluit dit script Opera uit? In ieder geval vind ik het maar een ranzig script, zet dan gewoon een meta refresh in de pagina die je in het iframe toont.
Het mooiste is dan ook om serverside gewoon elke keer na een refresh de switch te maken van banner naar headlines en vice versa...

[ Voor 80% gewijzigd door crisp op 07-11-2003 12:34 ]

Intentionally left blank


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
@JackieHerer
Ik ga even naar de DIV oplossing kijken. Hiermee moet het dus mogelijk zijn om steeds de InnerHTML hiervan aan te passen?

@crisp
Heb je het hier over het stukje setInterval("dayofweek_iframe()", 2000)?
Je kan dit o.a. ook vervangen door een recursieve setTimeout. Stond ook bij het script vermeld.

It’s nice to be important but it’s more important to be nice


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 15:13
Kun je niet al tijdens het ophalen van deze pagina in bijvoorbeeld PHP eenmalig de gegevens ophalen en dan echo'n naar bijvoorbeeld een JS array? Dan kun je zodra de pagina binnen is de gegevens uit de array gebruiken.

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Ook jouw suggestie zal ik meenemen djluc.
Maar er zal lijkt mij in ieder geval zeker wat DHTML code aan te pas moeten komen om te bereiken wat ik wil.

It’s nice to be important but it’s more important to be nice

Pagina: 1