iframe-inhalt als variable ausgeben
wadi
- javascript
0 Axel Richter0 wadi0 Axel Richter0 wadi0 Axel Richter0 wadi
hallo experten
eine counterabfrage mit iframe liefert mir im frame eine zahl 'NUM'. mit javascipt möchte ich NUM weiterverarbeiten, beispielsweise so:
if (NUM > 500) {anweisung}
NUM müsste dazu wohl als variable definiert werden. - für eine so einfache geschichte habe ich auf die schnelle nichts passendes gefunden (nur viel anspruchsvolleres, das ich leider vergeblich umzusetzen versucht habe). um ein javascript-studium fürs erste zu umgehen, bitte ich um einen scriptvorschlag.
herzlichen dank im voraus - wadi
Hallo,
eine counterabfrage mit iframe liefert mir im frame eine zahl 'NUM'.
Das ist keine Zahl.
mit javascipt möchte ich NUM weiterverarbeiten, beispielsweise so:
Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.
viele Grüße
Axel
Hallo,
eine counterabfrage mit iframe liefert mir im frame eine zahl 'NUM'.
Das ist keine Zahl.
gut, das war missverständlich. ich meine eine ganz normale zahl, zb. 386, die dann, wie angegeben, in einer if-bedingung weiterverwendet werden soll.
mit javascipt möchte ich NUM weiterverarbeiten, beispielsweise so:
Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.
wie gesagt: nichts als eine simple ziffer, deren wert sich im lauf der zeit aber ändert. - danke für die präzisierung. mit freundlichem gruß - wadi
viele Grüße
Axel
Hallo,
Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.
wie gesagt: nichts als eine simple ziffer, deren wert sich im lauf der zeit aber ändert.
Das ist immer noch sehr schwammig. Ein IFrame beinhaltet ein komplettes Dokument. Dieses hat Elemente, mindestens ein BODY-Element. Steht die Zahl direkt in diesem? Oder gibt es da eine komplette HTML-Elementstruktur?
Im jedem Fall bekommst Du, vom einbindenden Dokument aus, den IFrame mit:
var myIFrame = frames['framename'];
Das Dokument darin bekommst Du mit:
var myDocument = myIFrame.document;
Auf Elemente in diesem Dokument kannst Du mit unterschiedichen Methoden zugreifen. Mit welchen, hängt davon ab, wo genau Deine Zahl steht.
Allerdings, wenn ich mir das Ausgangsposting nochmal ansehe, wirst Du wohl an der same origin policy scheitern, weil das Dokument im IFrame nicht von Deiner Domain generiert wird. Dann ist der Zugriff mit JavaScript aus Sicherheitsgründen nicht erlaubt.
viele Grüße
Axel
Hallo,
Was _genau_ steht _wo_ im IFrame? Wie gesagt, ist "NUM" keine Zahl.
wie gesagt: nichts als eine simple ziffer, deren wert sich im lauf der zeit aber ändert.
Das ist immer noch sehr schwammig. Ein IFrame beinhaltet ein komplettes Dokument. Dieses hat Elemente, mindestens ein BODY-Element. Steht die Zahl direkt in diesem? Oder gibt es da eine komplette HTML-Elementstruktur?Im jedem Fall bekommst Du, vom einbindenden Dokument aus, den IFrame mit:
var myIFrame = frames['framename'];
Das Dokument darin bekommst Du mit:
var myDocument = myIFrame.document;
Auf Elemente in diesem Dokument kannst Du mit unterschiedichen Methoden zugreifen. Mit welchen, hängt davon ab, wo genau Deine Zahl steht.
Allerdings, wenn ich mir das Ausgangsposting nochmal ansehe, wirst Du wohl an der same origin policy scheitern, weil das Dokument im IFrame nicht von Deiner Domain generiert wird. Dann ist der Zugriff mit JavaScript aus Sicherheitsgründen nicht erlaubt.
viele Grüße
Axel
#################################################################
vielen dank erst mal für Deine geduld. und ich hatte blauäugig an was einfaches gedacht. - jene "ziffer taucht in der html-seitenansicht auf. aber Du fragst zu recht nach dem script. deshalb jetzt ganz explizit:
...
<iframe frameborder="no" scrolling="no" src="http://amigos.de/cgi-bin/counter.pl?font=1&len=3&textmode=1&id=zzz"></iframe>
[diese counterabfrage liefert einen zahlenwert, der weiterverwendet werden soll in der form:]
<script language="JavaScript">
if (zahlenwert > 500) {anweisung ...}
</script>
...
immer noch schwammig? herzlich wadi
Hallo,
<iframe frameborder="no" scrolling="no" src="http://amigos.de/cgi-bin/counter.pl?font=1&len=3&textmode=1&id=zzz"></iframe>
[diese counterabfrage liefert einen zahlenwert, der weiterverwendet werden soll in der form:]
<script language="JavaScript">
if (zahlenwert > 500) {anweisung ...}
</script>
...
immer noch schwammig?
Nein, aber es wird nicht funktionieren. Es würde nur funktionieren, wenn die Seite, welche den IFrame einbindet, auch auf dem Host unter der URL http://amigos.de/ abgelegt ist. Alles andere verhindert die same origin poicy.
Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Zugriff auf IFrame</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
<!--
function getIFrame() {
var myIFrame = frames["IFrame"];
try {
var myIFrameDocument = myIFrame.document;
var myIFrameInnerHTML = myIFrameDocument.body.innerHTML;
alert(myIFrameInnerHTML);
} catch(e) {
alert(e.description);
}
}
//-->
</script>
</head>
<body>
<iframe name="IFrame" frameborder="no" scrolling="no" src="test.html"></iframe>
<button onclick="getIFrame();">getIFrame</button>
</body>
</html>
funktioniert, weil test.html auf dem selben Host liegt, wie die Ressource, welche den IFrame einbindet. Wird aber im IFrame eine Ressource angezeigt, die nicht von diesem Host ausgeliefert wird, dann darf mit JavaScript nicht darauf zugegriffen werden.
Grund für diese Einschränkung ist Folgende:
Gäbe es diese Einschränkung nicht, könnte man z.B. die Seite einer Bank in einem Frame der eigenen Präsenz einbinden und dann beliebig mit JavaScript manipulieren. Beispielsweise die Daten von Anmeldeformularen umleiten. Das nennt sich phising, ist kriminell und wird trotzdem gemacht. Allerdings wäre es ohne diese JavaScript-Einschränkung noch einfacher zu realisieren.
viele Grüße
Axel
immer noch schwammig?
Nein, aber es wird nicht funktionieren. Es würde nur funktionieren, wenn die Seite, welche den IFrame einbindet, auch auf dem Host unter der URL http://amigos.de/ abgelegt ist. Alles andere verhindert die same origin poicy.
Beispiel:
...
funktioniert, weil test.html auf dem selben Host liegt, wie die Ressource, welche den IFrame einbindet. Wird aber im IFrame eine Ressource angezeigt, die nicht von diesem Host ausgeliefert wird, dann darf mit JavaScript nicht darauf zugegriffen werden.
Grund für diese Einschränkung ist Folgende:
Gäbe es diese Einschränkung nicht, könnte man z.B. die Seite einer Bank in einem Frame der eigenen Präsenz einbinden und dann beliebig mit JavaScript manipulieren. Beispielsweise die Daten von Anmeldeformularen umleiten. Das nennt sich phising, ist kriminell und wird trotzdem gemacht. Allerdings wäre es ohne diese JavaScript-Einschränkung noch einfacher zu realisieren.
###################################################################
hallo axel
oh, das habe ich nicht entfernt vermutet! bei einem andern zähler (andy hoppe)kann man direkt die counter-variable 'count' beim server abfragen und weiterverwenden. nur, für meine speziellen zwecke wäre der amigos-zähler praktischer (da beliebiebige user-ids). vielleicht ergibt sich die access-einschränkung hier aus der verwendung von IFRAME, aber das ist die einzige mir bekannte abfragemöglichkeit. - schon merkwürdig, dass mann den zahlenwert auf dem bildschirm hat und nur manuell weiterverwenden kann. ich habe selbst einen server (omnisecure) zu testzwecken installiert. vielleicht lässt sich der vorhandene zahlenwert in ein php-script übertragen und abfragen ...
für Deine große hilfsbereitschaft, kompetente auskunft und vor allem auch geduld möchte ich Dir herzlich danken!