Alternative zu iframe / object gesucht. DIV?
noob
- javascript
Hallo!
Ich versuche im Moment folgendes:
Ich habe eine Seite mit einem Link. Wenn ich auf diesen Link klicke, dann soll sich eine andere Html Datei in einer Thickbox öffnen. Beide Dateien liegen auf meinem Server. Jedoch will ich die Stylesheets aus Datei a (die mit dem Link drauf) auch auf Datei b (die Seite, welche geöffnet wird) benutzen können.
Mit iframes ist sowas ja nicht möglich. Mit einem object tag wohl auch nicht.
Jetzt habe ich mir gedacht: Ich versuche es so umzubauen, dass Seite 2 in einem Div angezeigt wird. Dann könnte ich ja die Styles aus 1 auch in 2 verwenden, oder?
Aber wie selle ich so etwas an? Ich müsste dazu ja das Thickbox js umschreiben und zwar an der Stelle, an welcher der iframe "generiert" wird.
Das schaut im Moment bei mir so aus:
<iframe type='text/html' frameborder='0' hspace='0' data='"+urlNoQuery[0]+"'
id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"'
onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' >
</iframe>
Jetzt müsste ich das zu einem Div machen. Dazu müsste ich per js doch eigentlich die 2te Html Datei reinladen, oder?
Also irgendwie so:
<div id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"'
onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'>
<!-- hier wird die seite welche über die URL angesprochen wird(!!!) reingeladen (urlNoQuery[0]) -->
</div>
Aber wie lade ich das dann da rein? Würde das so überhaupt funktionieren?
Hi,
Ich habe eine Seite mit einem Link. Wenn ich auf diesen Link klicke, dann soll sich eine andere Html Datei in einer Thickbox öffnen. Beide Dateien liegen auf meinem Server. Jedoch will ich die Stylesheets aus Datei a (die mit dem Link drauf) auch auf Datei b (die Seite, welche geöffnet wird) benutzen können.
Mit iframes ist sowas ja nicht möglich. Mit einem object tag wohl auch nicht.
Nun, es waere u.U. moeglich, wenn du in das Dokument im Iframe nach dem Fertigladen ein neues Link-/Style-Elemente einhaengst (und dort bereits vorhandene ggf. deaktivierst/entfernst).
Jetzt müsste ich das zu einem Div machen. Dazu müsste ich per js doch eigentlich die 2te Html Datei reinladen, oder?
Nein, nur die Inhalte von deren body - schliesslich darf ein Div keine Elemente wie html oder body enthalten.
Aber wie lade ich das dann da rein?
Per Zuweisung des nachgeladenen HTML-Codes an die innerHTML-Eigenschaft des Divs beispielsweise.
MfG ChrisB
Nein, nur die Inhalte von deren body - schließlich darf ein Div keine Elemente wie html oder body enthalten.
Das hat die Datei ja auch nicht. In der Datei wird lediglich plain dann was ausgegeben...
Also z.b. ein Div in welchem Text steht. In Datei a sage ich dass jedes span element rot sein soll. In Datei a funktioniert das ja dann auch, nur in Datei b nicht.
Hi,
Nein, nur die Inhalte von deren body - schließlich darf ein Div keine Elemente wie html oder body enthalten.
Das hat die Datei ja auch nicht. In der Datei wird lediglich plain dann was ausgegeben...
Na dann waere es ja andererseits wiederum bloedsinnig, sie in einem Iframe einbinden zu wollen (sofern sie nicht als plain text dargestellt werden soll).
Also z.b. ein Div in welchem Text steht. In Datei a sage ich dass jedes span element rot sein soll. In Datei a funktioniert das ja dann auch, nur in Datei b nicht.
Nee, ohne CSS natuerlich nicht.
MfG ChrisB
Na dann waere es ja andererseits wiederum bloedsinnig, sie in einem Iframe einbinden zu wollen (sofern sie nicht als plain text dargestellt werden soll).
Das macht die Thickbox, in welcher es ja angezeigt werden soll ja standartmäßig von Haus aus.
Nee, ohne CSS natuerlich nicht.
Deshalb habe ich mir ja gedacht ich packe es in ein div. Dann sollte es doch die styles übernehmen, oder?
Hi,
Deshalb habe ich mir ja gedacht ich packe es in ein div. Dann sollte es doch die styles übernehmen, oder?
CSS interessiert sich natuerlich nicht dafuer, *wie* ein Element in den aktuellen Dokument-Baum gelangt ist.
MfG ChrisB
okay... aber angenommen ich habe mein html dokument(a):
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="thickbox.js"></script>
<link rel="stylesheet" href="thickbox.css" type="text/css" media="screen" />
<style>
h1{color:red;}
</style>
<title>thickbox</title>
</head>
<body>
<h1>thickbox</h1>
<div>
<a href="2.html?KeepThis=true&TB_iframe=true&height=400&width=600" class="thickbox">test</a>
</div>
</body>
</html>
und mein anderes dokument (b):
<div>
<h1>foobar</h1>
</div>
nun will ich dass das h1 in b ebenfalls rot ist, ohne ihm nochmal den style zu geben.
wenn ich das nun in der thickbox über einen iframe aufrufe (was die thickbox ja per default macht), dann bekommt es ja den style nicht (wegen xss glaube ich).
wenn ich es nun aber irgendwie abändern könnte/würde, dass die seite b nicht mehr in einem iframe sondern in einem div geladen wird, dann sollte es doch funktionieren, oder? dann gibt es keine komplikationen wegen xss, da b dann "fest" in der seite als element drinnen ist, oder nicht?
Hi,
wenn ich das nun in der thickbox über einen iframe aufrufe (was die thickbox ja per default macht), dann bekommt es ja den style nicht (wegen xss glaube ich).
Nein, sondern weil der Iframe ein eigenstaendiges Dokument enthaelt.
wenn ich es nun aber irgendwie abändern könnte/würde, dass die seite b nicht mehr in einem iframe sondern in einem div geladen wird, dann sollte es doch funktionieren, oder?
Waren wir so weit nicht schon?
MfG ChrisB
Nein, sondern weil der Iframe ein eigenstaendiges Dokument enthaelt.
eben... xss.
Waren wir so weit nicht schon?
ja, aber noch nicht wirklich bei einer lösung mit der ich was anfangen könnte... sry.
Hallo,
Nein, sondern weil der Iframe ein eigenstaendiges Dokument enthaelt.
eben... xss.
nein, XSS ist etwas völlig anderes.
Waren wir so weit nicht schon?
ja, aber noch nicht wirklich bei einer lösung mit der ich was anfangen könnte... sry.
Was ist dir an Chris' Vorschlag:
Per Zuweisung des nachgeladenen HTML-Codes an die innerHTML-Eigenschaft des Divs beispielsweise
noch unklar? Wenn du präzise fragst, was dir fehlt, können wir dir vielleicht weiterhelfen.
So long,
Martin