Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[IE10] iframe contents geven null terug in js

Pagina: 1
Acties:

  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
Hoi,

Ik ben bezig een stylesheet toe te voegen aan een iframe. Dat lukt aardig, behalve in IE10.
Het probleem dat ik tegenkom is dat er wel een head en body bestaan, maar dat die niet benaderbaar zijn door javascript. In ieder geval, ze geven null terug.

Via google kwam ik tegen dat ik write() kan gebruiken, maar het vervelende is dat ik dan volgens mij een lege body krijg.
Hetzelfde geldt trouwens voor head, deze geeft ook een null terug.
Ik heb aardig gezweet op wat ik tot nu toe heb, alleen bij dit laatste loop ik tegen een muur op.
Een voorbeeld van de huidige code is te zien op:
http://svp2.timelord.nl/

Voor de duidelijkheid, ik heb geen controle over de iframe, hij wordt geladen via javascript van twitter.com.

Dit is het relevante deel.

JavaScript:
1
2
3
4
5
if (ifrm.body == null) { // null in IE 10
    ifrm.write("<body></body>");
    console.log("ifrm.body is: ", ifrm.body);
}
var body = ifrm.body; // nog steeds null


Ook een regel
JavaScript:
1
jQuery(ifrm).prepend("<head></head>");

geeft geen resultaat in IE10

https://timelord.nl


Verwijderd

Komt de bron van de iframe van een andere site? Dan kan het wel eens goed zijn dat je tegen cross-site scripting beveiliging aanloopt

  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
Hmm, ik had wel meldingen van "Permission denied" maar volgens mij is dat opgelost.
En de bron van het javascript en de iframe is inderdaad twitter, terwijl ik de css probeer te laden van het hoofddomein komt.
Maar zou dan ifrm.write nog steeds een null moeten genereren?
Ik snap ook niet precies hoe ik dan om de beveiliging heen zou moeten werken.

https://timelord.nl


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Die beveiliging is er niet voor niets -_-

Als je je tweets in een andere stijl wilt, zul je de API moeten gebruiken en die zelf stylen. Maar kijk wel uit dat je je aan de regels houdt, want het is *hun* logo waar je aan gaat zitten stylen.

日本!🎌


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Het is een in de code gecreëerd iframe, dus het is geen security probleem, anders zou het in andere browsers ook niet werken. http://stackoverflow.com/...rigin-iframe-body-on-ie10

Eigenlijk kan ik het probleem niet makkelijk naspelen in IE10, misschien kun je een jsfiddle maken of zoiets? Hoe kom je precies aan de variabele ifrm?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
Dit is de code die eraan vooraf gaat, een heel standaard manier om een iframe uit te lezen lijkt me. Het gaat er van uit dat niet alles op ieder moment al bestaat.
JavaScript:
1
2
3
4
5
ifrm_elem = document.getElementById('twitter-widget-0');
if (typeof ifrm_elem.contentWindow == 'object') {
    ifrm_content = ifrm_elem.contentWindow;
    if (typeof ifrm_content.document == 'object') {
        ifrm = ifrm_content.document;

https://timelord.nl


  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
Nou moe, er is iets anders aan de hand.
Om permissie problemen te vermijden had ik begrepen dat ik document.domain moet zetten. Maar als ik dat doe geeft de JS-engine in IE10 problemen.
Zet ik de document.domain niet dan werkt alles gewoon.
Tja, zo zie je maar, random tips van het internet plukken leidt niet altijd tot het gewenste resultaat.

Dus dan snap ik ook dan het niet makkelijk na te spelen is, bedankt Pedorus :).

https://timelord.nl


  • Nedra
  • Registratie: Juli 2006
  • Laatst online: 17-10-2023
Ik heb je topic niet geheel doorgelezen, maar moest er wel aan denken toen ik de laatste jQuery update zag: http://blog.jquery.com/20...-10-2-and-2-0-3-released/ waarbij het volgende issue is opgelost '#13980: JQuery library does not load in Opera 12.15 and IE 10 in IFrame which content is loaded from external domain'

Misschien heeft dat er iets mee te maken?
Pagina: 1