Ga naar inhoud


Google linkt naar frame, niet naar geheel


boaz

Aanbevolen berichten

Ik maak/onderhoud een website met pagina's die opgebouwd zijn uit meerdere frames.

Via zoeken met Google worden links gevonden naar deze site. Aanklikken van een dergelijke link, geeft het betreffende frame paginavullend, niet de andere frames.

Nu was er een truukje om die link naar een frame toch te laten linken naar de totale framestructuur, met de gewenste info in het frame.

Maar wat was dat ook al weer? Het was een bepaalde code in de header.

 

 

Ik kan bezoekers natuurlijk naar de index linken via:

 

<script>

if (parent.frames.length==0)

window.location.replace("http://websiteadres")

</script)>

 

Maar in plaats van op de index wil ik ze wel op de gewenste pagina laten uitkomen, maar dan wel met alle frames.

 

Oja, ik werk met Frontpage.

 

VU+ Ultimo OpenPli  en een Vu+ Solo als vervanger van een kapotte duo ongerepareerd in een doosmet een Visiosat 4 LNB's. Beide met Pli.

Vu+ > Philips AVR9900 > Panasonic TH-42PZ8E Plasma full HD en Solo > Samsung LCD 32"
(en een museum Dreambox 7000 met HD/CF/USB/NAS ongebruikt)

Link naar reactie
Delen op andere sites


Gast Topscoder

Ik denk dat je toch met een serverside-scripttaal (zoals PHP of ASP) de URL van de pagina mee moet geven aan de pagina met het frameset, zodat je die pagina in je frameset kunt laten openen.

 

Je zou dan het volgende kunnen doen:

 

Php Code:
<script type="text/javascript">if ( parent.frames.length == 0 ){  var huidige_pagina = window.location;  window.location = 'http://www.domein.nl/frameset.php?load='+huidige_pagina;}</script>// in PHP kun je die url dan opvangen en in je frameset gebruiken<frameset .....<frame src="<?= $_GET['load']; ?>" name="body" scrolling="auto" id="bodyFrame" /></frameset> 

 

Let wel op, want op deze manier kan ook de URL aangepast worden om bijv. google.com in je frameset in te laden.

Link naar reactie
Delen op andere sites

Tsja, php zou inderdaad een oplossing kunnen zijn, maar ik zou het zonder php willen doen. Op Internet vindt ik talrijke identieke vragen en zelfs een voorbeeld waarin het werkt zoals gewenst, alleen wordt niet beschreven hoe dit bereikt wordt. Wel wordt in een voorbeeld eerst enkel het frame getoond, een seconde daarna het frame in de complete frameset, alleen hoe blijft onduidelijk.

VU+ Ultimo OpenPli  en een Vu+ Solo als vervanger van een kapotte duo ongerepareerd in een doosmet een Visiosat 4 LNB's. Beide met Pli.

Vu+ > Philips AVR9900 > Panasonic TH-42PZ8E Plasma full HD en Solo > Samsung LCD 32"
(en een museum Dreambox 7000 met HD/CF/USB/NAS ongebruikt)

Link naar reactie
Delen op andere sites

Origineel bericht van: boaz
Tsja, php zou inderdaad een oplossing kunnen zijn, maar ik zou het zonder php willen doen.


Waar geen php?
Als je php gebruikt weet je zeker dat het werkt.

Als je javascript gebruikt moeten bezoekers javascript toestaan op hun pc. Heel veel bedrijven doen dat niet en daar zal je redirect niet werken.

btw, werken met frames geeft bijna altijd problemen met zoekmachines. Je bouwt je website beter in div's, dan heb je dat probleem niet.

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Tja, kwestie van jarenlange ervaring met Frontpage en alles kunnen realiseren wat je wilt, alle software hebben en voor php weer geheel opnieuw moeten beginnen.

Bovendien, de enige beperking die ik tot nu toe heb is met zoekmachines, en die weten inmiddels aardig hun weg binnen frames (na 1 week zonder enige inspanning al op pagina 1 te vinden).

Nu enkel nog die truuk en ik ben een werkend voorbeeld tegengekomen, enkel niet hoe het werd gedaan.

VU+ Ultimo OpenPli  en een Vu+ Solo als vervanger van een kapotte duo ongerepareerd in een doosmet een Visiosat 4 LNB's. Beide met Pli.

Vu+ > Philips AVR9900 > Panasonic TH-42PZ8E Plasma full HD en Solo > Samsung LCD 32"
(en een museum Dreambox 7000 met HD/CF/USB/NAS ongebruikt)

Link naar reactie
Delen op andere sites

OK, bedankt, ga 't proberen te ontcijferen en te transplanteren.

 

Inderdaad het truukje dat ik zoek, helaas werkt het nog niet. Probleem is dat ik rechtsmidden een groot frame (hoofdframe) heb met de informatie die Google vindt en linkt.

De site is vervolgens opgebouwd met een altijd hetzelfde topframe, links 2 frames met inhoudsopgave(bovendeel/onderdeel) en een bottomframe bestaande uit 2 frames.

De link uit google moet dus het gewenste frame geven omringt door de standaardframes zoals ze in index.htm staan.

VU+ Ultimo OpenPli  en een Vu+ Solo als vervanger van een kapotte duo ongerepareerd in een doosmet een Visiosat 4 LNB's. Beide met Pli.

Vu+ > Philips AVR9900 > Panasonic TH-42PZ8E Plasma full HD en Solo > Samsung LCD 32"
(en een museum Dreambox 7000 met HD/CF/USB/NAS ongebruikt)

Link naar reactie
Delen op andere sites

Je moet natuurlijk wel jouw eigen frameset in mijn code transplanteren ja, anders zal het niet werken.

 

Dus jouw eigen frameset even bekijken en de naam van de variable html pagina in het betreffende frame vervangen door de javascript variabele zoals in mijn script.

 

Ik heb de code een beetje aangepast zodat beter te zien is hoe het werkt.

Code:
<script type="text/javascript">URLName = "" + window.location; params  = URLName.lastIndexOf("?"); loadURL = URLName.substr(params + 1,URLName.length - params); if( !loadURL || loadURL == '' || loadURL == URLName ) {	loadURL = "start.html";}// LET OP!!!// Deze frameset declaratie moet een kopie zijn // van de frameset declaratie in het <noscript> // gedeelte hieronder.// Alleen de src naam van het mainFrame://		src="start.html">// vervangen door://		src="'+loadURL+'"// var source = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"';source += '"http://www.w3.org/TR/html4/frameset.dtd">';source'>http://www.w3.org/TR/html4/frameset.dtd">';source += '<html>';source += '<head>';source += '<title>Index</title>';source += '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />';source += '<meta name="author" content="Duwgati" />';source += '</head>';source += '<frameset rows="110,*" border=0 frameborder=0 cols="*">';source += '<frame name="topFrame" src="topframe.html" scrolling="no">';source += '<frame name="mainFrame" src="'+loadURL+'">';source += '</frameset>';source += '<noframes></noframes>';source += '<body>';source += '</body>';source += '</html>';document.write(source);</script><noscript>	<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"	   "http://www.w3.org/TR/html4/frameset.dtd">	<html>	<head>			<title>Index</title>		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />		<meta name="author" content="Duwgati" />	</head>	<frameset rows="110,*" border=0 frameborder=0 cols="*">		<frame name="topFrame" src="topframe.html" scrolling="no">		<frame name="mainFrame" src="start.html">	</frameset>	<noframes></noframes>	<body>		</body>	</html></noscript>

 

Omdat dit werkt m.b.v. javascript, moet je ook zorgen dat mensen die javascript uit hebben staan, wel jouw website kunnen blijven zien. Daarom bestaat de code uit een <script>...</script> gedeelte voor mensen met javascript en een <noscript>...</noscript> gedeelte voor mensen zonder javascript.

 

De frameset in het <noscript>...</noscript> gedeelte wordt dus de frameset die je normaal gebruikt als je mijn aanpassingen niet zou gebruiken.

 

De frameset in het <script>...</script> gedeelte is een kopie daarvan met een kleine aanpassing in het frame waar de variabele pagina moet worden geladen.

Het stukje '+loadURL+' in deze regel zorgt ervoor dat dit script werkt bij mensen met javascript.

Code:
source += '<frame name="mainFrame" src="'+loadURL+'">';

 

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...