• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

jquery iframe zugreifen

nvidia3

Neues Mitglied
Warum funktioniert das hier nicht: Wieso passiert da nichts?
// die seite mit iframe
Code:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
$().ready(function () { 
    $("#iframe").ready(function () { //The function below executes once the iframe has finished loading
		$("#iframe").contents().find("body").append('<div class="ab"></div>');
    }); 
}); 
</script>
</head>
<body>
<iframe id="iframe" src="/iframe"></iframe>
</body>
</html>
//mein iframe inhalt
Code:
<!doctype html>
<html>
<head>
<style>
.hidden { display:none;}
.ab { width:100px;height:100px;background-color:blue;border:1px solid black;}
</style>
</head>
<body>
	<div class="hidden">
	<input type="button" cless="abc" value="ABCD"></input>
	</div>
</body>
</html>
 
Zuletzt bearbeitet:
Werbung:
Dann antworte ich mal selbst: Dort steht nichts.

Es liegt daran, dass ready hier zu früh feuert. Aber zumindest im Firfox funktioniert stattdessen load()
 
Werbung:
ok mit load funktionierts in FF,Chrome, Safari und ie8.
Opera bringt mir diesen Fehler:
Uncaught exception: ReferenceError: Security error: attempted to read protected variable
in der Zeile wo das div eingefügt wird.
 
Zuletzt bearbeitet:
Code:
Uncaught exception: ReferenceError: Security error: attempted to read protected variable

Error thrown at line 17, column 46106 in <anonymous function: k.isXML>(a) in https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js:
    var b=(a?a.ownerDocument||a:0).documentElement;
called from line 17, column 42047 in <anonymous function: k>(b, e, f, g) in https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js:
    if(!g&&!k.isXML(e))
called from line 17, column 47555 in <anonymous function: find>(a) in https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js:
    g=e.length,f.find(a,this[c],e);
called from line 4, column 2 in <anonymous function>() in http://localhost:8000/test:
    $("#iframe").contents().find("body").append('<div class="ab"></div>');
called from line 17, column 1708 in <anonymous function: handle>(c) in https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js:
    var k=j.handler.apply(this,g);
called via Function.prototype.apply() from line 16, column 60224 in <anonymous function: k>(a) in https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js:
    return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b

//Edit hab den Fehler gefunden
jquery wurde von googleapis geladen, was eine externe domain ist.
Wenn man die datei lokal läd, funktioniert es.
 
Zuletzt bearbeitet:
Ich hab keinen Safari zu Hause, deshalb konnte ich es nicht testen.

Aber das ist Interessant, wenn das so ist, dann macht das Safari aber anders als alle anderen Browser. Dort ist ein extern eingebundenes Skript genauso berechtigt auf alle Elemente zu zugreifen, wie ein internes.
 
Werbung:
Ich glaub du hast es verstanden, aber nur falsch hingeschrieben.
Opera (nicht Sarafi) sieht ein extern eingebundenes Script auf einer internen Seite als fremde Quelle an und verweigert den Zugriff. Alle anderen von mir getesteten Browser tun das nicht.
Opera ist da einen Tick vorsichtiger ;-)
 
Ok, falsch gelesen. Mein Opera hat aber damit keine Probleme (11.5/Ubuntu), der fügt ohne zu murren das blaue Quadrat ein.
 
Zurück
Oben