Archiv verlassen und diese Seite im Standarddesign anzeigen : Javascript - Server Client (Browser) Kommunikation
Hallo,
ich habe folgendes Problem, und zwar habe ich ein Javascript geschrieben das versucht eine Kommunikation zwischen Browser
und Server herzustellen.
Dazu gibt es folgende Moeglichkeiten, mit XMLhttpRequest (Ajax - auslesen des XMl-feeds) oder mit iframes so wie es google Adsense
macht.
Dabei bin ich auf folgendes Problem gestossen:
ein simpler XMLhttpRequest ist wenn die domain in der das
Javascript liegt und die domain die aufgerufen wird und fuer
die das javascript ausgefueht wird, nicht moeglich ist:
http://ajaxpatterns.org/XMLHttpRequest_Call#IFrame_Call
Dazu gibt es allerdings eine Alternative die iframe heisst.
Das problem beim iframe ist allerdings dass der frame in den
browser geschrieben wird bevor ich ueberhaupt das Resultat
der Kommunikation zwischen Server und Client kenne -> Folge
ist ein weisser Fleck den der Iframe belegt.
Gibt es irgendwie ander Moeglichkeiten solch eine Kommunikation
durch verschiedene Tricks zu bewerkstelligen? Ich gehe davon aus
dass das Problem loesbar ist, denn ich hab so eine aehnliche
Problemloesung schon gesehen, allerdings nur in der Anwendung,
nicht technischerseits.
Danke fuer eure Antworten.
Möglichkeit:
Leg dir auf deinen Server lokal ein PHP-Script das die Daten per readfile holt. Damit fragst du dann das lokale Script mit deinem Ajax Request - die Daten kommen aber vom anderen Server
Generell unterliegt JavaScript der "Same Domain Policy" - Alles was requestet wird MUSS in der selben Domäne liegen. einzige Ausnahem bildet da das <script>-Tag. Als src davon darf man beliebige Domains angeben.
Noch ne Möglichkeit mit deinem IFrame:
CSS: display: none; und per JS nur sichtbar machen, wenn der Inhalt deinen Erwartungen entspricht.
Original geschrieben von prego
Noch ne Möglichkeit mit deinem IFrame:
CSS: display: none; und per JS nur sichtbar machen, wenn der Inhalt deinen Erwartungen entspricht.
Hi Prego,
auf die Moeglichkeit bin ich auch schon gekommen, allerdings
wie kontroliere ich ob der Inhalt den ich in den Iframe bekomme
das ist was ich erwarte, z.B. ein bestimmtes wort im text?
Noch eine Sache, das Dokument das aufgerufen wird, in dem
befindet sich nur <script javascript src=> nichts weiter, an die
css kann ich nicht ran, sprich ein Adsense Code.
Original geschrieben von dingos
Noch eine Sache, das Dokument das aufgerufen wird, in dem
befindet sich nur <script javascript src=> nichts weiter, an die
css kann ich nicht ran, sprich ein Adsense Code.
Du willst also auf den Inhalt der dir von google gelieferten Anzeigen reagieren - in welcher Art und Weise denn?
Je nachdem, was du vorhast, wäre vielleicht erst mal zu klären, ob das mit den AGB von google konform geht.
Genau, ich will auf den vom iframe gelieferten Code im browser
reagieren, allerdings nicht von dem von Google geliefterten sondern von meinen eigenen.
Original geschrieben von dingos
Genau, ich will auf den vom iframe gelieferten Code im browser
reagieren
Geht auch nur dann, wenn der Iframeinhalt von deiner Domain stammt.
ok, d.h.
wenn ich in die domain www.meinedomain.de nen javascript
mit src=http://www.deinedomain.de einbaue, javascript den iframe
sendet dann kann nicht im javascript entscheiden ob ich ihn
angezeigt haben will oder nicht?
Ok, dann andere Frage:
kennt ihr die in-line contextads con kontera.com?
Die machen im Prinzip das was ich suche, allerdings weiss
ich nicht wie das technisch dahinter aussieht und hab auch
im moment keine Vorstellung darueber.
Ich hab gerade kein beispiel parat in dem ich es zeigen kann.
IntelliTXT macht im prinzip das gleiche.
dein problem ist irgendwie nicht klar ersichtlich.
reicht es vielleicht, dass du den iframe erst nach erfolgreicher komunikation (in voller größe) anzeigst?Hatte wohl n bisschen lang gelesen...
Original geschrieben von dingos
wenn ich in die domain www.meinedomain.de nen javascript
mit src=http://www.deinedomain.de einbaue,
Wie schon gesagt, an dieser Stelle kannst du auch eine Ressource von woanders einbinden - sonst würden die ganzen auf JS basierenden Services, die Seiten mit externen Inhalten befüllen, ja gar nicht funktionieren.
javascript den iframe sendet
Javascript "sendet" keine Iframes.
Bitte mach dir erst mal in Grundzügen klar, was du erreichen willst, und wie es in etwa technisch funktioniert - vorher kann man dir glaube ich kaum weiterhelfen.
ok, werd mal versuchen den kompletten Sachverhalt in code zu fassen da ich sehe dass meine Beschreibung nicht komplett angekommen ist.
nehmen wir an ein surfer ruft eine Seite auf in der mein javasciptcode
eingebunden ist:
Domain: www.abc.de
und zwar folgendermassen:
<html>
....
<body>
....
<SCRIPT LANGUAGE="JavaScript" src="http://www.mydomain.com/javascript.php?a=34"></SCRIPT>
....
</body>
</html>
www.mydomain.com ist meine und das Javascript sieht folgendermassen funktionsmaessig folgendermassen aus:
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34></iframe>');
so, wenn ich das nun ganz normal so laufen lasse dann wird mir der frame beim Seitenaufruf von www.abc.de angezeigt unabhaengig davon ob dieser mit Ihnhalt gefuellt ist oder nicht erscheint er
im Browser - das will ich allerdings vermeiden und zwar indem ich
in frame.php ueberpruefe ob a=34 existiert oder nicht und abhaengig davon will ich den frame sehen oder nicht.
Ists etwas klarer jetzt?
Gewöhne dir bitte endlich ab, Domains zu verlinken, die nicht dir gehören!
Und für Beispiele gibt es example.com/.net/.org.
mrhappiness 23-08-2006, 15:42 Und warum prüfst du nicht schon in javascript.php?
if (produces_output($_GET['a']))
echo 'document.write(...);';
ok, hast recht .. meine Beschreibung ist falsch, ich versuche mich zu korrigieren was folgendermassen aussieht :
nehmen wir an ein surfer ruft eine Seite auf in der mein javasciptcode
eingebunden ist:
Domain: www.abc.de
und zwar folgendermassen:
<html>
....
<body>
....
<SCRIPT LANGUAGE="JavaScript" src="http://www.mydomain.com/javascript.php?a=34"></SCRIPT>
....
</body>
</html>
www.mydomain.com ist meine und das Javascript sieht folgendermassen funktionsmaessig folgendermassen aus:
var variable; // variable kann nur vom browser richtig bestimmt werden, serverseitig nicht!
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34&var=' + variable + '></iframe>');
so, wenn ich das nun ganz normal so laufen lasse dann wird mir der frame beim Seitenaufruf von www.abc.de angezeigt unabhaengig davon ob dieser mit Ihnhalt gefuellt ist oder nicht erscheint er
im Browser - das will ich allerdings vermeiden und zwar indem ich
in frame.php ueberpruefe ob die variable variable einem bestimmten Muster entspricht oder nicht und abhaengig davon will ich den frame sehen oder nicht.
Also willst du eigentlich
var variable = wert;
if(variable == 'xyz') {
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34&var=' + variable + '></iframe>');
}
...?
Original geschrieben von wahsaga
Also willst du eigentlich
var variable = wert;
if(variable == 'xyz') {
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34&var=' + variable + '></iframe>');
}
...?
koennte ich teoretisch so machen, alldings gibts da ein Problem und
zwar den Vergleich kannst Du nur mit begrenzt vielen if-Abfragen
einschraenken, d.h. ich kann in das Skript nicht unbegrenzt viele
ifs rein bauen wenn die Menge moeglichen Werte z.B. 10.000
ist was bei mir der Fall ist. Die If-Abfrage muss ich gezwungenermassen Serverseitig durchfuehren.
Original geschrieben von dingos
d.h. ich kann in das Skript nicht unbegrenzt viele
ifs rein bauen wenn die Menge moeglichen Werte z.B. 10.000
ist was bei mir der Fall ist.
Es war doch von einem "Muster" die Rede? Also ist doch wohl anzunehmen, dass sich die Anzahl nötiger Abfragen durch Verwendung einer Mustersuche (Stichwort: Reguläre Ausdrücke) stark unter 10.000 drücken ließe.
Die If-Abfrage muss ich gezwungenermassen Serverseitig durchfuehren.
Gut, dann mach halt das - und liefere abhängig davon Javascript-Code aus, der entweder einen Iframe ins Dokument einfügt, oder nicht.
var variable; // variable kann nur vom browser richtig bestimmt werden, serverseitig nicht!
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34&var=' + variable + '></iframe>');
geht doch nicht, zumindest nicht bei meinem Konstrukt, und zwar aufgrund dessen da der Iframe auftaucht bevor ich weiss ob er
auftauchen darf oder nicht.
Siehe Vorschlag #2, meine vorherige Antwort.
Original geschrieben von wahsaga
Siehe Vorschlag #2, meine vorherige Antwort.
geht nicht, denn ich kann nicht etwas vorab entscheiden
wenn ich die Variablen noch nicht kenne.
Ok, ich seh mich hier im Moment in einer Sackgasse, zumindest
zum jetztigen Stand meiner Kenntnisse.
Koennen wir eventuell versuchen das Problem mit einem anderen
Loesungsansatz anzupacken.
Kennt jemand von euch IntelliTXT? das sind die gruenen
in-text Anzeigen die Werbung anzeigen wenn man mit der Mouse
druebergeht.
Wie funktioniert das technisch gesehen? denn im Prinzip
ist das eine weiter Loesung.
Original geschrieben von dingos
geht nicht, denn ich kann nicht etwas vorab entscheiden wenn ich die Variablen noch nicht kenne.
Wieso denn "vorab"?
Mache den Wert dem Server bekannt, und lasse den Server dann entscheiden, ob er den Javascript-Code zur Erzeugung eines Iframes ausliefert.
Original geschrieben von wahsaga
Wieso denn "vorab"?
Mache den Wert dem Server bekannt, und lasse den Server dann entscheiden, ob er den Javascript-Code zur Erzeugung eines Iframes ausliefert.
Ok, klingt logisch, nur wie? Wenn ich mir diesen "Codesnippets"
anschaue:
...
var variable = 'irgendwas';
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34&var=' + variable + '></iframe>');
...
dann muss es hier zwischen rein:
...
var variable = 'irgendwas';
";
if ( ... ):
echo"not valid";
else:
echo"
document.write('<iframe src='http://www.mydomain.com/frame.php?a=34&var=' + variable + '></iframe>');
endif;
echo "
...
Original geschrieben von dingos
Ok, klingt logisch, nur wie?
liefere abhängig davon Javascript-Code aus
Also über <script src="...">
ne, das geht nicht wahsaga, und zwar auf grund dessen da die variable im javascript sich befindet, die Abfrage aber in php stattfindet und das Ergebnis in javascript weiterverarbeitet werden muss.
Folgende Loesung ist mir soeben eingefallen:
Ich setzt mit dem phpscript nen bestimmten cookie und les
den dann mit javascript aus, je nachdem wie er gesetzt ist
setze ich den iframe auf visible oder halte ihn verborgen,
danach loesche ich den cookie wieder.
Die Frage ist nun ob ich beliebig cookies setzen kann, unabhaenig
von der Domain und ob ich mit javascript beliebig alle cookies
im Browser auslesen kann oder ob der Cookie von der Domain
stammen muss in der sich der Browser befindet.
Wenn der Cookie gesetzt ist wird meines wissens auch ne
phpsessionid gesetzt? Falls so hoffe ich, dass ich den cookie
unabhaengig davon trotzdem auslesen kann.
Komplizierte Sache sag ich da nur, in Urlaub fahren is einfacher.
:confused:
Original geschrieben von dingos
ne, das geht nicht wahsaga, und zwar auf grund dessen da die variable im javascript sich befindet, die Abfrage aber in php stattfindet und das Ergebnis in javascript weiterverarbeitet werden muss.
Natürlich geht es - aus irgendeinem Grund weigerst du dich nur immer noch, es zu verstehen.
Du hast deine Variable im Javascript.
Du forderst eine Ressource vom Server an, ein Javascript, über <script src="...">
Dabei übergibst du den zu prüfenden Wert als GET-Parameter.
Dein serverseitiges Script prüft nun diesen Wert, wenn er OK ist, gibt es den Javascript-Code zurück, der den Iframe im document erzeugt (document.write oder wie auch immer).
Komplizierte Sache sag ich da nur, in Urlaub fahren is einfacher.
Hoffentlich muss man dir das weniger detailiert erklären ...
Du meinst ich soll das "verschachteln"?
Sprich dass ich folgenden Aufbau habe:
in einem beliebigen Dokument/Domain habe ich folgenden Code
eingebaut:
<script ... src=www.meinedomain.com/script.php>
</script>
script.php sieht folgendermassen aus:
var variable = beliebig, ausgelesen von Browser
checken mit
<script src=www.meinedomain.com/check.php?var=' + varibale + '></script>
was dann den Code des iframe ausgibt oder auch nicht.
Im ganzen sieht das dann so aus:
<script ... src=www.meinedomain.com/script.php>
</script> |
<script src=www.meinedomain.com/check.php></script>
:confused:
|
|