HTML-Skript: Errechneter WErt in IPS-Variable

Hallo Leute,

dieses ist ein Ausschnitt aus einem HTML-Skript das im Webfront in einer HTML-Box läuft:

$ausgabe.= '</script>';
$ausgabe.= '</div>';
$ausgabe.= '<script type="text/javascript">';
$ausgabe.= 'document.write("Weite: " + Weite + " Höhe: " + Hoehe);';
$ausgabe.= '</script>';

Wie bekomme ich den Wert der Variablen „Weite“ und „Höhe“ in IPS-Variable?

Joachim

(Diese Frage habe ich schon mal hiergestellt, aber leider bisher ohne Antwort. Ich hoffe ein "Doppelposting ist in den Fällen zulässig, wo die Frage in einem Spezialgebiet auftaucht, sich aber eher um eine allgemeine Frage der Programmierung handelt…)

Servus

Das als ganzes zu erklären ist etwas aufwändig.
Kurz: Du brauchte eine Event ( zb. OnClick, OnChange ect.) mit welchem du ein Script aufrufst. Diesem Script übergibts du den Werte. In deinem Fall „Breite“ " Höhe".
Das Script nimmt die Werte mit ‚Get‘ entgegen und schriebt ihn gnaz Nnormal per SetValue(xxx) nach IPS.

Schau dir zb. mal dieses Script an. Da erzeuge ich einen HTLM Range Input ( = Slider) und schreibe den Wert in IPS Variablen.

  • vieleicht jemand anderes ein einfacheres Beispiel zur Hand.

gruß
bb

Hallo bb,

vielen Dank für Deine Antwort. In diesem Skript wird die Berechnung ja durch die Größenänderung des Fensters selbst getriggert (also kein Klick)…

Joachim

P.S.: Hast Du evtl. den Link vergessen?

Ach sorry. Hab den link nun eingefügt.

gruß
bb

…ich habe es mal so versucht (Ausschnitt):

$ausgabe.= '<script type="text/javascript">';
$ausgabe.= '/* Überwachung von Internet Explorer initialisieren */';
$ausgabe.= 'if (!window.Weite && document.body && document.body.offsetWidth) {';
$ausgabe.= '  window.onresize = neuAufbau;';
$ausgabe.= '  Weite = Fensterweite();';
$ausgabe.= '  Hoehe = Fensterhoehe();';
$ausgabe.= '  window.onresize="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'user/groesse.php?ts=\' + (new Date()).getTime() + \'&VariablenID=23307&Wert=Hoehe\' })"';
$ausgabe.= '}';

Die aufgerufene Datei groesse.php sieht so aus:

$VariablenID = $_GET['VariablenID'];
$Wert   = $_GET['Wert'];

if ($VariablenID > 0)
{
    SetValueInteger($VariablenID, $Wert);
}

Ich habe im IPS eine Integer-Variable mit der ID 23307, in die der Wert „Hoehe“ geschrieben werden soll.

Leider tut sich gar nichts…Sieht jemand von Euch den Fehler??

Joachim

Hier noch mal das erste Skript im Ganzen:

$ImgFloorplan = '"user\floorplan\Gesamt_II.png"';

$ausgabe ='<p>';
	 $ausgabe.= '<div id="floorplan" style=width:auto; height:auto; position:absolute; left:0px; top:0px; z-index:-1;>';
	 
	 $ausgabe.='<p><img src='.$ImgFloorplan.' width="100%"; height=100%"; border="0"></p> </div>';
$ausgabe.= '<head>';
$ausgabe.= '<title>Größenänderung überwachen</title>';
$ausgabe.= '<script type="text/javascript">';
$ausgabe.= 'function Fensterweite () {';
$ausgabe.= '  if (window.innerWidth) {';
$ausgabe.= '    return window.innerWidth;';
$ausgabe.= '  } else if (document.body && document.body.offsetWidth) {';
$ausgabe.= '    return document.body.offsetWidth;';
$ausgabe.= '  } else {';
$ausgabe.= '    return 0;';
$ausgabe.= '  }';
$ausgabe.= '}';

$ausgabe.= 'function Fensterhoehe () {';
$ausgabe.= '  if (window.innerHeight) {';
$ausgabe.= '    return window.innerHeight;';
$ausgabe.= '  } else if (document.body && document.body.offsetHeight) {';
$ausgabe.= '    return document.body.offsetHeight;';
$ausgabe.= '  } else {';
$ausgabe.= '    return 0;';
$ausgabe.= '  }';
$ausgabe.= '}';

$ausgabe.= 'function neuAufbau () {';
$ausgabe.= '  if (Weite != Fensterweite() || Hoehe != Fensterhoehe())';
$ausgabe.= '    location.href = location.href;';
$ausgabe.= '}';

$ausgabe.= '/* Überwachung von Netscape initialisieren */';
$ausgabe.= 'if (!window.Weite && window.innerWidth) {';
$ausgabe.= '  window.onresize = neuAufbau;';
$ausgabe.= '  Weite = Fensterweite();';
$ausgabe.= '  Hoehe = Fensterhoehe();';
$ausgabe.= '  window.onresize="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'user/groesse.php?ts=\' + (new Date()).getTime() + \'&VariablenID=23307&Wert=Hoehe\' })"';
$ausgabe.= '}';
$ausgabe.= '</script>';
$ausgabe.= '</head>';
$ausgabe.= '<body>';
$ausgabe.= '<script type="text/javascript">';
$ausgabe.= '/* Überwachung von Internet Explorer initialisieren */';
$ausgabe.= 'if (!window.Weite && document.body && document.body.offsetWidth) {';
$ausgabe.= '  window.onresize = neuAufbau;';
$ausgabe.= '  Weite = Fensterweite();';
$ausgabe.= '  Hoehe = Fensterhoehe();';
$ausgabe.= '  window.onresize="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'user/groesse.php?ts=\' + (new Date()).getTime() + \'&VariablenID=23307&Wert=Hoehe\' })"';
$ausgabe.= '}';


$ausgabe.= '</body>';
Echo $ausgabe;
SetValuestring(34077 , $ausgabe);

Servus

so direkt kann ich dir da jetzt auch nicht helfen.
Aber versuche doch mal in kleinen Schritten vorzugehen:

  • erstmal nur einen Wert übergeben
  • diesen Wert hardcoden
  • ein Objekt nehmen welches auch OnClick oder OnChange reagiert

Da kannst dann mal Teile als „funktionierend“ abhaken und dich so schrittweise zum Problem vorarbeiten.

viel Glück
bb

…ich mache hier mal weiter…

Meine Skripte scheinen insoweit zu funktionieren, wenn ich z.B. ein „onklick“-Ereignis auf das Hintergrundbild lege und eine Variable übertrage.
Der Schlüssel etwas „ohne“ einen besonderen Grund bzw. ohne ein besonderes Ereignis zu machen liegt wohl in dieser Zeile:

onclick="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'user/groesse.php?ts=\' + (new Date()).getTime() + \'&VariablenID='.$test.'&Wert=Hoehe\' })"';

Auf was muss ich diese Zeile reduzieren, damit der Wert übertragen wird, wenn er innerhalb der Funktion bei der Zeile angekommen ist???

Joachim