[JS]Hoogte van een niet lokale pagina opvragen

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04
De hoogte van een iframe source kan je onder andere ophalen met
JavaScript:
1
2
3
var hoogte_local= document.getElementById('local')
                          .contentWindow.document.body['scrollHeight'];
document.getElementById('local').height= hoogte_local;

Aan de naampjes van de elementen kan je al misschien zien waar het omgaat. Dit werkt namelijk alleen als je op hetzelfde domain zit.(Voor zover ik weet).
Wil je dit voor een iframe source op een ander domain doen, dan krijg je een exceptie. Volkomen terecht, maar het komt natuurlijk niet altijd uit. :)

In principe sta ik open voor allerlei suggesties. Een javascript op de iframe source zetten is een optie, alleen wil ik dit zoveel mogelijk vermijden. Dit omdat de source eigenaar een logge organisatie is waarbij je de bureaucratie kan vergelijken met de Vogons uit The HitchikersGuide to the Galaxy.

Mogelijke oplossingen waar ik zelfs naar grijp is via een C# service de sourcepagina binnenhalen, deze naar een tijdelijke afbeelding te zetten en daar de hoogte van uit te lezen en deze weer door te geven. Je begrijpt dat dit met een vrij drukke site een aanslag op de serverload is/wordt.

Tevens heb ik gekeken om te zien of het mogelijk is om te zien of je kan kijken of het bewuste iframe scrollbars heeft. Zo ja, blijf het iframe vergroten net zolang totdat deze weg is. Ik heb alleen geen flauw idee of je kan zien of het iframe een scrollbar heeft.

Korom: is er een mogelijkheid om dit te omzeilen?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Even voor mijn goed begrip: je hebt dus een pagina X, met daarin een iframe. In deze iframe staat een pagina - laten we hem pagina Y noemen - van een andere website.

Klopt het dat jij de hoogte van pagina Y te weten wilt komen?

  • Blaise
  • Registratie: Juni 2001
  • Niet online
Kan niet ivm veiligheid, is cross-site scripting.

Verwijderd

Het is wel te omzeilen ja. Haal de pagina op met een server-side script en pass deze rechtstreeks naar de client, met eventueel wat modificaties om een base href op te geven in verband met stylesheets.

Dan heb je de pagina min of meer op je eigen domein, maar gebruik je wel wat extra traffic. Dit kun je limiteren door maar eens in de zoveel tijd de nieuwe pagina op te halen, en hem uit de cache van je webserver te serveren.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:04
Rekcor schreef op dinsdag 16 januari 2007 @ 19:07:
Even voor mijn goed begrip: je hebt dus een pagina X, met daarin een iframe. In deze iframe staat een pagina - laten we hem pagina Y noemen - van een andere website.

Klopt het dat jij de hoogte van pagina Y te weten wilt komen?
Klopt.
Blaise schreef op dinsdag 16 januari 2007 @ 19:09:
Kan niet ivm veiligheid, is cross-site scripting.
Klopt.
Verwijderd schreef op dinsdag 16 januari 2007 @ 19:10:
Het is wel te omzeilen ja. Haal de pagina op met een server-side script en pass deze rechtstreeks naar de client, met eventueel wat modificaties om een base href op te geven in verband met stylesheets.

Dan heb je de pagina min of meer op je eigen domein, maar gebruik je wel wat extra traffic. Dit kun je limiteren door maar eens in de zoveel tijd de nieuwe pagina op te halen, en hem uit de cache van je webserver te serveren.
Dat zal wel de enige optie zijn. De file tijdelijk lokaal opslaan, 'even gauw inladen' en tonen. Van mijn collega heb ik inmiddels vernomen dat er binnenkort een API beschikbaar wordt gesteld. Op deze manier kunnen we de hele handel zelf bouwen.

Helaas is het cachen van de pagina geen optie, omdat deze per bezoeker anders is. Qua hoogte en informatie.

Heart..pumps blood.Has nothing to do with emotion! Bored