iFrame probleem

Status
Niet open voor verdere reacties.

gast0187

Gebruiker
Lid geworden
4 nov 2012
Berichten
266
Wat ik wil:

Een iframe dat zich automatisch aanpast aan de ingeladen pagina.

dus dat de iFrame zich automatisch aanpast aan de hoogte die nodig is om geen scrollbars te hebben (ik wil maar 1 scrollbar uiterst rechts, niet de horizontale/verticale van de iframe)

Kan iemand me helpen ?

Alvast op voorhand bedankt.

IK heb geen idee hoe hieraan te beginnen.

Graag jullie hulp?

Javascript, HTML of Jquery als een oplossing als dit kan is ook goed. (liefst geen php, gaat om schoolopdracht en we moeten iframes gebruiken)

Mvg gast0187
 
Laatst bewerkt:
Ik heb dit net geprobeerd maar dat blijft hetzelfde.

Maar ik wil dat de iframe hoogte aangepast wordt naargelang de hoogte die nodig is voor de inhoud weer te geven zonder scrollbar, dan zou ik toch van die ene lelijke scrollbar verlost zijn.

Alvast op voorhand bedankt
 
Laatst bewerkt:
javascript iframe adapting wil nog niet werken/werkt me tegen

Dit wordt vernoemd op de site:

1. The iframe should has an ID assigned:

<iframe
id="slideshow_frame"
src="frame.html"
frameborder="0"
width="100%"
marginheight="0"
marginwidth="0"
scrolling="no"
></iframe>
2. the page loaded into the iframe should contains all the html into an “easy retrievable” container (a div with an ID is perfect!):

<div id="content">
<div style="background: red; width: 400px; height: 120px"></div>
<div style="background: green; width: 400px; height: 300px"></div>
<div style="background: yellow; width: 400px; height: 60px"></div>
</div>
3. on the iframe’s page “onload” event, a function will be executed to adjust its height:

function resizeIframe(iframeID)
{
var iframe = window.parent.document.getElementById(iframeID);
var container = document.getElementById('content');
iframe.style.height = container.offsetHeight + 'px';
}

In mijn code heb ik nu (bijv. met de index.html en welkom.html):

index.html

HTML:
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <link href="CSS/style.css" rel="Stylesheet" type="text/css"/>
        <link href="CSS/nav.css" rel="Stylesheet" type="text/css"/>
        <script>
            function resizeIframe(inhoud) 
            {       
                var iframe = window.parent.document.getElementById(inhoud);
                var container = document.getElementById('content');
                iframe.style.height = container.offsetHeight + 'px';            
            }
        </script>
    </head>
    <body id="achtergrond">
        <div id="container">
             ......(Hier staat mijn HTML code)......
            <article>              
                <iframe src="welkom.html" name="inhoud" id="inhoud" width="940" scrolling="no" onload="resizeIframe(inhoud)"></iframe>           
            </article>
             ......(Hier staat vervolg van mijn HTML code)......
        </div>
    </body>
</html>

welkom.html

HTML:
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <link href="CSS/style.css" rel="Stylesheet" type="text/css"/>
    </head>
    <body>
        <div id="content">......(Hier staat de HTML Code)......</div>
    </body>
</html>

Wat doe ik verkeerd? (het is niet dat de iframe zich op dezelfde pagina moet aanpassen als ik op de link klik, meestal is dat de bedoeling van die scripts die ik google en vind/uitprobeer)

Dat weet ik dat je met "php include" dit probleem kan vermijden (je hebt me dit eerder ook al aangeraad) :p
Dat was 1 regel code als ik me nog goed herinner.

Maar mijn pagina's heb ik nu al en het is voor een schoolopdracht en 1 van de vereisten zijn "Gebruik van iframe(s)", maar die lelijke scrollbars beïnvloed het design van de site negatief.:confused:
Vandaar dat ik bij deze nu geen php include kan gebruiken.
Dus ik moet een oplossing vinden zonder php of het bedenken van de inhoud in te korten om het probleem te vermijden.

ik heb ondertussen de pagina's passend gemaakt aan de vaste iframehoogte door zo weinig mogelijk content te verwijderen. (Dat was lastiger dan ik dacht :d)

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
Aha!
Vriend DaveOnCode zegt:
3. on the iframe’s page “onload” event, a function will be executed to adjust its height:
Bij jou staat de functie op de hoofdpagina index.html, en zou getriggerd moeten worden door een onload op het iframe. Maar de hoofdpagina kan nog steeds niet weten hoe hoog het iframe is...
Het script zegt: "var iframe = window.parent.document.getElementById(inhoud);".
Dan gaat het script op zoek naar de parent-pagina van de index, en die is er niet. > Dan kan ie het niet doen. ;)

Kijk nog maar eens goed naar de functie:
[JS]function resizeIframe(iframeID)
{
var iframe = window.parent.document.getElementById(iframeID);
var container = document.getElementById('content');
iframe.style.height = container.offsetHeight + 'px';
} [/JS]
Dus:
  • De ingesloten pagina welkom.html moet de functie krijgen.
  • De ingesloten pagina welkom.html moet ook de trigger krijgen: <body onload="resizeIframe('inhoud')">.
  • Nu gaat de welkom-pagina via het script naar z'n parent: de index-pagina, en pakt daar het element met de id="inhoud" (het iframe dus).
  • Dan stelt het script vast hoe hoog de container-div is met de id="content" = de hoogte van de content van de welkom-pagina.
  • En tenslotte exporteert het script de gevonden hoogte naar de parent = dat wordt de iframe-hoogte op de index-pagina.
Het is een foefje dat je even moet weten: je kan niet vanuit de pagina met het iframe in de pagina in het iframe kijken, maar je kan wel vanuit de ingesloten pagina omhoog kijken naar de de pagina met het iframe (en die pagina opdrachten geven).
Voorwaarde is dat de pagina's op hetzelfde domein bivakkeren, anders zouden er rare dingen kunnen gebeuren.

Ik zou de functie eigenlijk schrijven als:
[JS]function resizeIframe(iframeID)
{
var contentHoogte=document.getElementById('content').offsetHeight; // bepaal hoogte van de content op de ingesloten pagina.
var iframe = window.parent.document.getElementById(iframeID); // ga naar parent-pagina en grijp het iframe-element daarin
iframe.style.height = contentHoogte + 'px'; // maak het iframe net zo hoog als de content van de ingesloten pagina.
} [/JS]
Komt op hetzelfde neer, maar leest iets makkelijker.

Als ik geen fout gemaakt heb, zou die het zo moeten doen.
  • Terzijde: pff, wat een opdracht, om een site met frames te maken ... :eek:
Met vriendelijke groet,
CSShunter
_____
PS:
De aanroep van een id als argument van een functie (bij de onload) moet tussen aanhalingstekens: anders denkt het script dat het een variabele is.
De iframeID in de functie zelf is een dummy voor wat je gaat invullen, en kan rustig blijven staan (daar zonder aanhalingstekens, want dat is wel een variabele die verderop in de functie wordt gebruikt. De value van die variabele wordt overgenomen van de ingevulde waarde.

Maar ... het hoeft helemaal geen algemene functie te zijn, want je weet van tevoren al hoe alles heet *). :)
Dan kan de functie ook luiden:
[JS]function resizeIframe()
{
var contentHoogte=document.getElementById('content').offsetHeight;
var iframe = window.parent.document.getElementById('inhoud');
iframe.style.height = contentHoogte + 'px';
} [/JS]
De aanroep wordt dan simpelweg: <body onload="resizeIframe()"> (de body van de welkom-pagina dus).

Alle andere pagina's die in het iframe moeten verschijnen: van hetzelfde laken een pak. Eveneens de functie, en ook de onload in de body.
____
*) Een algemene functie zou alleen nodig zijn als je verschillende iframes op dezelfde pagina hebt staan. Maar zo erg is het gelukkig niet. :P
 
Laatst bewerkt:
Hartelijk bedankt voor de hulp.

Ik zal dit binnenkort testen.

Ik laat weten of het met dit zal lukken.

Mvg gast0187
 
Het lukt me nog steeds niet.

Ik heb de bestanden gezipt en in bijlage gestoken.(de index.html en welkom.html + css (style + de opmaak van mijn nav balk)

Wil jij mijn pagina's eens bekijken en indien nodig aanpassen ? (ik heb denk ik nochtans alles gedaan zoals moest)

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
Hoi gast0187,
... denk ik nochtans alles gedaan zoals moest.
Nop! :P
  • In de index-pagina staat nog steeds het script, en de onload op het iframe. Die twee moeten er uit!
  • Je kan al zien aan de javascript-console van de Firefox Webdeveloper Toolbar (heb je die al? aanrader!) dat er scriptfouten in zitten. Klopt, want (zoals gezegd) een parent van de index.html is er niet.
  • De resize-functie staat nu zoals het hoort in de welkom-pagina.
  • Maar de aanroep in de body-tag is nog verkeerd. Zie m'n post hierboven: er moeten enkele aanhalingstekens in voor de naam van de id!
  • Als je dat doet, wordt het iframe in de index.html meteen een stuk hoger. :)
Toch is er nog een inwendige scrollbar bij het iframe :rolleyes:, die je een klein stukje kunt schuiven (om de onderste twee regels te kunnen zien).
Heb je een idee waar dat aan kan liggen?
  • Hint 1: bekijk even de css (voor het verschil in hoogte tussen de <body> en de <div id="content">). Want de <body> komt in het iframe! *)
  • Hint 2: margins kunnen erg verraderlijk zijn!
Verder: de <head> mist de charset, waar de html-validator tegen protesteert (altijd goed om die over een niet werkende pagina heen te laten gaan, zie m'n handtekening). - Maar daar ligt het niet aan in dit geval.

Met vriendelijke groet,
CSShunter
__________
*) Wat dat betreft is de tip van DaveOnCode een beetje een dwaalspoor! :shocked:
 
Laatst bewerkt:
Werkt, maar nog niet alle browsers willen meedoen

Bedankt voor de hulp CSShunter, zonder uw hulp zou ik hier nooit aan uit geraakt zijn.

Maar nu zit ik met nog een probleem.
Ik heb dit getest in firefox en dat werkt, maar hij doet het alleen niet in Google Chrome. (IE doet het maar veroorzaakt een nieuw probleem)
Tot mijn grote verbazing wil Internet Explorer deze keer wel mee doen (het is niet IE die deze keer moeilijk doet :p), alleen heb ik bij IE een probleem dat de andere browsers niet hebben namelijk mijn titel staat uit beeld.
Opera en Safari doen het ook perfect.

Dus 1 van de 5 browsers werkt tegen.

Sommige browsers werken met document.getElementById, document.all, document.layers.
Ik zou hiervoor gebruik maken van de getObj functie.

Kan jij helpen hoe ik dan de functie moet aanpassen zodat dit in iedere browser werkt.

Code:
/* *************************
 * functie: getObj
 * doel:    maak een object met een eigenschap obj als 
 *          cross-browser objectverwijzing naar een element op de pagina
 * in:      id van het element
 * out:     
 * gebruik: var mijnobj = new getObj('elementnaam');
 *          objecteigenschap: mijnobj.obj.objecteigenschap
 * *************************/
function getObj(name)
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
}

Na dit resten alleen nog die laatste 2 regels die nog steeds voor een kleine scrollbar zorgen.
Ik dacht aan padding, en ja dit lukte :p (een div rond de hele inhoud met een class ruimte met padding van 20px gegeven die in de body zit)

Hier de aangepaste zip-file: Bekijk bijlage 184100

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
Kijk, het marcheert de goede kant op! :)

Dus 2 van de 5 browsers werkt tegen of veroorzaakt nieuwe problemen:
1. Hij doet het alleen niet in Google Chrome.
2. In IE staat mijn titel uit beeld.
1. Chrome
Dit is gelukkig loos alarm. Bij lokaal bekijken doet Chrome het inderdaad niet, maar na uploaden en bekijken vanaf internet wel.
Het zal te maken hebben met de Chrome-veiligheidsmaatregelen voor lokaal gebruik van javascript (voor als je een pagina met rottig javascript downloadt en die dan lokaal wilt bekijken).

2. Internet Explorer
Dit is eigenlijk ook loos alarm:
  • Als ik IE8 en IE9 bekijk via Browsershots.org, zijn die alle twee in orde.
  • Als ik IE7 test, wordt inderdaad de <h1> paginakop naar boven buiten beeld getrokken en het menu zit ook veel te hoog.
  • Ook IE6 gaat volgens Browsershots de mist in.
  • Voor de screenshots van Browsershots: zie hier (het iframe is buiten dienst gesteld, en de ingesloten fonts ook).

  • Maar ... IE6 is afgedankt, en daar hoef je geen rekening mee te houden.
  • IE7 wordt nog maar door minder dan 1% van het surfend publiek gebruikt, en komt de laatste 3 maanden ook al niet meer apart in de browser-statistieken van Nederland en België voor. Daar hoef je je dus ook niet druk over te maken.
Wil je het toch ook voor IE6/IE7 helemaal in orde maken (en het is voor de rest ook wel zo netjes):
  • Het verschijnsel in IE6/IE7 is een combinatie van de wat eigenaardige manier waarop je met css de bovenafstand van de <h1>-regel hebt opgegeven + de niet-standaard manier van IE6/IE7 om met de margin-top om te gaan van de eerste elementen in een pagina.
  • Wat heb je gedaan? De <body> heeft een negatieve margin-top: body {margin-top:-10px}, de #container heeft {margin: -10px auto} (dus óók een negatieve margin-top), de <h1> heeft géén opgegeven margin-top (maar wel een float!), en het menu heeft weer een negatieve margin-top: #nav {margin-top: -50px}.
  • Wat speelt er? Een <h1> heeft uit zichzelf een margin-top en margin-bottom! Dat kan je bv. zien met Firebug voor Firefox (ook een aanrader):

    vhoeve.png

  • Ook <ul>'s en <li>'s kunnen uit zichzelf een margin-top en -bottom hebben (kan per browser verschillen).
  • Met jouw operatie wil je die extra margins van de <h1> afschaven - maar in IE6 en IE7 lukt dat niet.
  • Alweer: margins kunnen verraderlijk zijn!
Wat je het beste kunt doen: alle negatieve margin-top's verwijderen / de margin-top van de <body> expliciet op 0 zetten / de margin-top en de margin-bottom van de <h1> expliciet op 0 zetten, de margin-top van het menu ook expliciet op 0 zetten, en eventueel nodige verticale afstanden van de <h1> met de padding regelen.

Verder heeft denk ik de <h1> geen float nodig, want ik zie er aan de rechterkant niets naast zitten. Met {text-align: left} begint de tekst ook aan de linkerkant.
En ik zou nog even dit topic lezen: de container kan wel gemist worden! :)

Met vriendelijke groet,
CSShunter
___________
O ja:
Sommige browsers werken met document.getElementById, document.all, document.layers.
Nou, nee! Dat was in de oertijd, maar nu gelukkig niet meer.
  • Een "document.all" was een slechte methode om Internet Explorers er uit te vissen. Maar met ingang van IE6 kan IE ook uitstekend overweg met "document.getElementById", net als alle andere browsers.
  • Een "document.layers" was bedoeld voor Netscape 4; als je weet dat Netscape 6 al met "document.getElementById" raad wist, Netscape 9 de laatste Netscape was, en Netscape intussen totaal ter ziele is ...
... dan is de conclusie dat "document.getElementById" voor alle huidige browsers werkt,
... en een function getObj(name) totaal overbodig is. :D
 
Laatst bewerkt:
Als het online werkt is het ok.
Offline is toch geen prioriteit maar zou weltof zijn mocht ik nog een methode zien te vinden voor google chrome offline.
Ik heb op een bepaalde pagina een klein javascriptje en offline werkt dit, dus ik denk niet dat google chrome javascript offline weigert.

Indien je hier nog een oplossing voor weet mag je het altijd posten, maar offline bekijkt toch geen kat de site. (dus iets minder belangrijk, maar zou wel leuk zijn)

De eerstvolgende dagen zal ik nog eens aan de css sleutelen voor die titel.

Bedankt voor de info, ik vond dit een zeer interessant onderwerp que gebruik met iframes, maar de meesten die php kunnen of geen verplichting hebben om gebruik te maken van iframes zullen waarschijnlijk altijd php include gebruiken.

Hartelijk Bedankt voor alle hulp bij dit onderwerp.
 
Laatst bewerkt:
Hoi Antoon,
Ik heb op een bepaalde pagina een klein javascriptje en offline werkt dit, dus ik denk niet dat google chrome javascript offline weigert.
Mij was het eerlijk gezegd ook nooit opgevallen dat Chrome niet aan offline javascript zou doen.
Maar ik heb een een proefje genomen:
In de functie op de ingesloten welkom-pagina (die dus in het iframe zit) heb ik toegevoegd:
[JS]alert('piep');
alert(contentHoogte);
alert(window.parent.document.getElementById('fontface').innerHTML);[/JS]
  • De piep is om te kijken of een alert überhaupt tevoorschijn komt.
  • De contentHoogte zit op de welkom-pagina zelf.
  • De window.parent-enz. klimt uit de welkom-pagina en zou de tekst van de <h1> van de index-pagina moeten opleveren.
Wat blijkt?
  • Chrome laat lokaal de piep gewoon zien.
  • Chrome geeft ook lokaal een mooi getal voor de contentHoogte.
  • Maar ... uit het iframe klimmen doet Chrome niet! Daar komt zelfs ook geen lege alert: helemaal niets. :rolleyes:
Terwijl bv. Firefox bij de laatste keurig "Vakantiehoeve aan de Oude Schelde" in de alert tevoorschijn tovert. :)

Conclusie:
  1. Chrome heeft lokaal geen bezwaar tegen "gewoon javascript". Met rekensommetjes, DOM-manipulatie en popups op dezelfde pagina is er geen centje pijn.
  2. Chrome heeft lokaal wel bezwaar tegen het met javascript opklimmen uit iframes!
Ik heb nog even in de geavanceerde instellingen van Chrome gekeken, maar daar staat niets in over lokaal blokkeren van iframe-zaken. Er zal dus dus weinig aan te doen zijn. Chrome heeft gewoon een selectief beleid voor lokaal javascript: sommige dingen mogen, andere dingen mogen niet.

Aha, de javascript-console van het Chrome-"hulpprogramma voor ontwikkelaars" (ook via de instellingen te bereiken) weet te melden:

Unsafe JavaScript attempt to access frame with URL file:///G:/tests/gast0187-index.html from frame with URL file:///G:/tests/gast0187-welkom.html.
Domains, protocols and ports must match.

En vervolgens weigert Chrome verder te gaan. Zo zit dat: veiligheidsmaatregel.

Maar ik was het dus nog nooit tegengekomen. *)

=======
Indien je hier nog een oplossing voor weet mag je het altijd posten.
Ik kan nog als omslachtige workaround verzinnen, ook met javascript:
  • Op de welkom-pagina bepaal je zoals nu de contentHoogte.
  • Het getal van de contentHoogte schrijf je weg in een cookie bij de bezoeker.
  • Als je de index-pagina opent, is de inhoud van het iframe er nog niet, dus het cookie valt ook niet op te vragen.
  • Maar je laat de index-pagina een éénmalige refresh uitvoeren, of laat 'm met een Timeout even een paar tellen wachten.
  • Dan is het cookie wel geplaatst, en kan de index-pagina het cookie opvragen.
  • De index-pagina kan nu met het getal uit het koekje de hoogte van het iframe gaan aanpassen. :)
Ha, nog eentje en eigenlijk veel beter!
  • Je kan de zaak helemaal omkeren.
  • De welkom-pagina (en alle andere pagina's die in het iframe zouden moeten komen) maak je tot echte complete html-pagina.
  • Op de plaats van het menu zet je een iframe.
  • Je weet tevoren al hoe hoog dat iframe is, want het menu is altijd hetzelfde.
  • Dus de ingesloten pagina bestaat uit alleen het menu.
  • Javascript is nu overbodig.
  • Zo voldoe je ook aan de opdracht "doe het met iframes" (tenzij de opdracht was dat de inhoud steeds in een iframe moet komen).
  • In feite gebruik je nu het iframe als php-include! Wie niet sterk is, moet slim zijn. :d
Met vriendelijke groet,
CSShunter
__________
*) Ook weer niet zo gek: ik daal niet af in iframes, en zeker niet om er daarna weer uit te klimmen! :P
 
Laatst bewerkt:
Deze zie ik wel zitten:

Ik kan nog als omslachtige workaround verzinnen, ook met javascript:
Op de welkom-pagina bepaal je zoals nu de contentHoogte.
Het getal van de contentHoogte schrijf je weg in een cookie bij de bezoeker.
Als je de index-pagina opent, is de inhoud van het iframe er nog niet, dus het cookie valt ook niet op te vragen.
Maar je laat de index-pagina een éénmalige refresh uitvoeren, of laat 'm met een Timeout even een paar tellen wachten.
Dan is het cookie wel geplaatst, en kan de index-pagina het cookie opvragen.
De index-pagina kan nu met het getal uit het koekje de hoogte van het iframe gaan aanpassen.

De andere oplossing wil ik ook wel weten maar ik denk dat eerder de bedoeling was dat de inhoud steeds in het iframe moet komen.

Hoe kan ik optie 1 implementeren?

De 2e optie wil ik ook wel weten ter info.

Hier ga ik zeker jouw hulp voor nodig hebben heb nog nooit gebruik gemaakt van cookies, (php include eigenlijk ook nooit, laat staan dat ik al iframes heb gebruikt als php include).

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
Hoi gast0187,

Nummer 1
Deze zie ik wel zitten: ... (cookie-workaround)
Daar heeft Chrome ons een mooie kool gestoofd! ;)

  • Download met bv. Firefox (dus niet met Chrome) deze: lokale-koekjes-test.htm
  • Open deze pagina lokaal met Chrome.
  • Ga naar de Chrome-instellingen en laat de aanwezige cookies tonen. Wat zie je?
lokale-chrome-cookies.png

In tegenstelling tot bv. Firefox, die ook lokaal toestaat om cookies te plaatsen:

lokale-ff-cookies.png

Conclusie:
Deze workaround-poging om voor Chrome het iframe-opklim-javascript te omzeilen ... werkt niet!
Net als het lokale iframe-opklim-verbod van Chrome hanteert Chrome kennelijk ook een lokaal cookie-verbod, en dan schieten we er geen zier mee op. Nummer 1 kan naar de prullenbak!
  • Open je daarna bovenstaande link in Chrome, dan zie je dat Chrome via internet wel het cookie heeft geplaatst.
Oftewel: het lokaal werken in Chrome zie ik gewoon niet lukken. Ik denk dat je dat maar moet vergeten. :)
=======

Nummer 2
Die is makkelijk te fabrieken. Voor de welkom-pagina in de vorm:
Code:
<!doctype html>
<html>
<head>
    ...
</head>

<body>
    <header>
        <h1>Vakantiehoeve "..." aan de Oude Schelde</h1>
    </header>

    <iframe id="menu" src="menu.html" width="940" height="45"></iframe>

    <article>
        <div id="content">
            <h2>Welkom op de vakantiehoeve "..." aan de Oude Schelde</h2>
            <p id="intro">
                U bent hartelijk welkom op onze vakantiehoeve aan de Oude Schelde.<br>
                Neem gerust een kijkje ... enz.</p>
        </div>
    </article> 

    <footer>
        <h3>Designed by: Antoon Verroken</h3>
    </footer>
</body>
In de menu.html komt dan in de <body> alleen de <nav>:
HTML:
...
<body>
    <nav>
        <ul id="nav">
            <li><a href="welkom.html">Home</a></li>
            <li><a href="#">Hoeve</a>...
            ... enz.
        </ul>
    </nav>
</body>
</html>
Ietsje speling in de hoogte van het iframe is aan te raden: dan kan een bezoeker desgewenst een groter letterformaat instellen zonder dat er een scrollbar in het menu komt.
Alternatief, geheel zonder risico: de items van het menu als images monteren. Dan heeft het menu altijd een vaste hoogte.

Oeps! :o
Ik zie dat het menu een uitklap-menu is!
Dan gaat helaas ook het feest van nummer 2 niet zomaar door! Want:
  • De uitklappers zitten óók in de ingesloten menu-pagina, die dus in hoogte moet kunnen groeien om de uitklappers te laten zien. De inhoud van het iframe kan immers niet over de grenzen van het iframe heen komen...
  • Dan krijg je ofwel een erg onhandige verticale scrollbar bij de menu-strook op het moment dat een submenu uitklapt.
  • Ofwel je moet de hoogte van het iframe net zo hoog maken als het hoogste submenu.
  • Maar dan ontstaat er een pittige lege ruimte tussen de ingeklapte menu-strook en de top van de content van de pagina.
Nu is daar ook wel weer wat op te verzinnen: als er een header-image met mooie foto van de woning + omgeving op die plaats wordt gezet (als background van de menu.html, met de hoogte van de hoogste submenu), dan valt dat niet op.

Al met al: iframes zijn dus niet ideaal - maar dat wisten we al.
Van mij mag je je opdrachtgever flink beknorren. *) :D
Vroeger wisten velen niet beter dan een website met een frameset of met iframes, maar dat hoort al zo'n 7 jaar verleden tijd te zijn. Tegenwoordig hebben zo ongeveer alle hosts er php op staan (en vroeger kon het ook al met shtml).

Met vriendelijke groet,
CSShunter
___________
*) Tenzij het doel van de opdracht is: weten hoe het werkt met de ouderwetse frame-methode, en aan den lijve ondervinden wat daarvan de beperkingen zijn. - Op zich best een aardige leerervaring, maar wel een beetje zonde van de tijd.
Uch, ik heb gezegd! ;)
 
Laatst bewerkt:
Eventuele workaround : Cookies lokaal toestaan met Google Chrome

Hallo,

Hartelijk Bedankt voor de tests uit te voeren.

Maar nu dacht ik even als we voor cookies nu eens een oplossing hadden ....

Ik heb nog eens gezocht naar een eventuele workaround voor de cookie voor het iFrame lokaal weergeven in Chrome.

En ja ik vond een mogelijke oplossing op stackoverflow. (hoe moet men dit aanpakken) :p

For those trying to use cookies for local files, try adding the following command line flag or switch to your Chrome shortcut:
--enable-file-cookies
It should allow Chrome to accept local file cookies.

Bron : http://stackoverflow.com/questions/6449063/javascript-fails-to-create-recognize-cookies-on-chrome

Deze persoon vond dit op deze site: http://productforums.google.com/for...blem-and-get-troubleshooting-help/iow88FsnNhQ

Helaas, werkt dit ook al niet meer met de laatste versie. :confused: (althans momenteel toch)

Hier heb ik een hele lijst gevonden waar Google Chrome moeilijk kan over doen: http://peter.sh/experiments/chromium-command-line-switches/#enable-file-cookies, + de workaround door middel van een command-line.

Als dit niet werkt deze methode ga ik het hier bij laten bij Chrome offline.

En dan nu verder met de andere problemen: ..... (zie volgende posts)

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
Even een andere vraag:

Dit is dus een fictieve site.
Maar ik zou hem graag online zetten.(de volledige site, versie dan)

Maar er blijkt dat je daarmee moet opletten.
Zou er geen probleem zijn mocht ik bij laden van de pagina een popup tonen waarin staat => Let op mensen, dit is een fictieve site d.w.z dat deze vakantiehoeve niet bestaat en dus niet te huren valt. Gelieve dan ook GEEN contact met ons op te nemen omtrent info.

Als ik dit laat verschijnen even in een pop-up dan zou er toch geen probleem mogen zijn?, of toch?

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
Hoi gast0187,
Even in volgorde:

Post nummer #16
De Chrome-cookies.
Ha, die Chrome command-regel opdrachten kende ik niet.
Ook geprobeerd, en doet het bij mij! :)
Hoe?
  • Je gaat naar "Start" > "Alle programma's" > "Google Chrome".
  • Niet klikken, maar rechtsklikken en dan "Eigenschappen".
  • In tabblad "Snelkoppeling" van het venster "Eigenschappen" staat "Doel".
  • Daarin staat iets als:
    "C:\Documents and Settings\username\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"
  • Daar zet je de command-opdracht achteraan, d.w.z.:
    "C:\Documents and Settings\username\enz.\enz.\...\chrome.exe" --enable-file-cookies
Als je nu via de Verkenner de lokale-koekjes-test.htm in Chrome opent, werkt het nog steeds niet. :confused:
Maar ...
  • Je opent Chrome via "Alle programma's" ... enz.
  • Dan geef je in Chrome een Ctrl+o (Control-toets ingedrukt houden en dan de letter "o").
  • Er komt een "Openen"-venstertje.
  • Je zoekt in de mappen de lokale-koekjes-test.htm op en opent die.
  • Je kijkt nu via Instellingen > Geavanceerd > Instellingen voor inhoud > "Alle cookies en site-gegevens" naar wat er gebeurd is.
  • En, hocus-pocus:
lokale-chrome-cookies-2.png

=======
Met deze omslachtige methode zijn dus lokaal cookies te plaatsen.
Om de iframe-aanpassing te maken, zou nu een script gemaakt moeten worden om het cookie op te vragen enz.
=======

Maar... als via de command-regel toch lokaal cookies kunnen worden toegestaan, kan dan ook niet toegestaan worden dat javascript vanuit een ingesloten pagina kan opklimmen naar de pagina waar het iframe in zit?

Bij de Chrome-eigenschappen moet nu ingevuld worden:
"C:\Documents and Settings\enz.\enz.\...\chrome.exe" --allow-file-access-from-files --enable-compositor-frame-message
  • Weer niet openen in de Verkenner, maar met Ctrl+o.
  • Hocus-pocus, het iframe past zich lokaal aan zoals in Firefox en de rest.
CSShunter
 
Post nummer #18
Menu voor IE
IE8 is gewoon niet toegerust voor html5!
Je zou het eens kunnen proberen met Modernizr.
Lukt dat niet, dan kan je je toevlucht nemen tot Conditional Comments, waarmee je (bepaalde versies van) IE eigen code kan toedienen.
  • Dan moet je wat je in je html als <nav>...</nav> hebt staan, ombouwen tot <nav><div id="nav">...</div></nav>, want een <nav>-tag is html5 wat IE8 en eerder niet kunnen begrijpen.
  • En wat in de css staat als nav {....} vervangen door #nav {...}.
Verder:
  • Gewoon Conditional Comment (iets speciaals voor IE): normal-conditional-comment.htm
  • Hiermee kan je ook een bepaalde versie van IE op de korrel nemen, bv: <!--[if lte IE 8]> ("lte"=less then or equal to; let op de spatie tussen IE en het versienummer!)
  • Omgekeerd Conditional Comment (alleen iets toedienen aan niet-IE): inverse-conditional-comment.htm
=======

Post nummer #20
Footer voor IE
Oef, ik kan al je html- en css-code + scripts niet meer overzien. En het gaat nu niet meer over de iframe-hoogte, maar over van alles en nog wat.
Terwijl de site een studie-opdracht is, en het niet helemaal de bedoeling is dat helpmij-vrijwilligers even alles oplossen waar je tegenaan loopt. :rolleyes:
Daarbij is telkens nabouwen van wat je gedaan hebt een vreselijk tijdrovend karwei > waar ik gewoon niet aan toe kom.
Een online testpagina kan wonderen doen om suggesties te krijgen!
Zo komen we op...

=======

Post nummer #17
Fictieve site online zetten
Een popup-waarschuwing lijkt me een prima idee.
  • Je kunt tegelijk ook een altijd zichtbaar balkje bovenin zetten, met een {position: fixed}, waarin je het ook nog eens zegt.
  • De contact-pagina zou ik zo inrichten, dat er gewoon geen mails verstuurd kunnen worden.
  • En je kan in de <head> een <meta> opnemen zodat de site buiten Google en andere zoekmachines blijft:
    <meta name="robots" content="noindex, nofollow" />
  • Op die manier indexeert Google de pagina niet (en de links erop naar andere pagina's van de site ook niet). Iemand die op "vakantiehoeve", "vakantiewoning" e.d. zoekt, zal de site dan nooit tegenkomen op de Google-resultatenpagina's.
Gegroet!
CSShunter
__________
PS: Maak je het jezelf niet een beetje te moeilijk? ;) (met alle mooie html5-, css3- en extra javascript-kunstjes die je wilt vertonen, waarbij je steeds een fall-back voor de IE's moet verzinnen)
 
Bedankt voor de info, ik ga eens proberen.

Inderdaad het is niet de bedoeling dat de vrijwilligers hier alles oplossen, maar verwacht ik ook niet: de hoofdzaak is opgelost waarvoor hartelijk bedankt.

Ik zoek tussentijds zelf ook naar oplossingen maar soms vind ik die niet op tijd en soms vind ik het dan niet en dan heb ik tussentijds antwoord op forum. (ik zet soms dingen op forum waar ik zelf ook opl voor zoek)

Ik heb ook niet gevraagd voor alles kant en klare code een tip kan soms ook werken (maar bij iframe hoogte lukte me dat nu niet)

Ok dat balkje zal ik plaatsen, geen mails kunnen versturen is niet nodig (want het mailadres is ook fictief) en er staat eerder ook al vermeld dat het fictief is buiten zoekrobots vind ik ook interessant

Mischien maak ik het wel wat ingewikkeld maar die nieuwe menu bar vind ikzelf mooier.
ik ga binnenkort de site online zetten dat kan zeker 18/05/2013 al gebeuren, want op 17/05/2013 23u55 dien ik de opdracht in.

Bedankt voor alle hulp, de rest zal ik zelf nog eens aan de html, css, js moeten sleutelen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan