1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Wieso geht mein JavaScript Code nicht im iPhone Browser?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von hornig, 13.03.09.

  1. hornig

    hornig Empire

    Dabei seit:
    12.08.08
    Beiträge:
    84
    moien,

    ich versuche mich gerade an javascript und habe mir was gebastelt, dank einiger hilfe aus http://www.coding-board.de/board/showthread.php?t=28005

    ich bin nun soweit, dass es in meinem firefox auf dem rechner funktioniert und ich hatte es spasseshalber mit meinem iphone aufgerufen, doch das zeigt mir dann nicht das an, was ich gerne hätte und was im firefox funktioniert.

    Code:
    <html>
    <head>
    <script type="text/javascript">
    var objInput, objOutput;
    var objXMLHTTP, blnBrowserSupportsAJAX = true;
       try
       {
           objXMLHTTP = new XMLHttpRequest();
       }
       catch(e)
       {
           try
           {
               objXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
           }
           catch(e)
           {
               try
               {
                   objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
               }
               catch(e)
               {
                   blnBrowserSupportsAJAX = false;
                   objOutput.style.display = "none"; // mach das select unsichtbar, wenn kein ajax geht
               }
           }
       }
    function init()
    {
        objInput = document.getElementById("input");
        objOutput = document.getElementById("output");
    }
     
    function fill () {
        if(objXMLHTTP.readyState == 0 || objXMLHTTP.readyState == 4)
        {
           objXMLHTTP.open("GET", "http://horn.hdtvtotal.com/download/select3.php?q=" + encodeURIComponent(objInput.value), true);
           objXMLHTTP.onreadystatechange = XMLHTTP_onreadystatechange;
           objXMLHTTP.send(null);
        }
    }
    function XMLHTTP_onreadystatechange()
    {
        if(objXMLHTTP.readyState == 4)
        {
           //alert(objXMLHTTP.responseText);
           var option =objXMLHTTP.responseXML.documentElement.getElementsByTagName("option");
           //alert("optionenlaenge" + option.length);
           for (i=0;i<option.length;i++)
           {
             name=option[i].getElementsByTagName("name");
             value=option[i].getElementsByTagName("value");
             
               //alert(name[0].firstChild.nodeValue);
               objOutput.options[i] = new Option(name[0].firstChild.nodeValue, value[0].firstChild.nodeValue, false, false);
           }
        }
    }
    </script>
    
    
    
    </head>
    <body onload="init()">
    <form name="form1" method="post" action="create_waggle_link.php">
      <label>1. Input
      <input type="text" name="input" id="input" onkeyup="fill(this.value)">
      </label>
      <label>2. Output
      <select name="output" id="output">
      </select>
      </label>
      <input type = "submit" name = "submit">
    </form>
    </body>
    </html>
    was das JS macht ist, dass wenn man ins inputfeld was tippt, bei jedem anschlag den text aus dem inputfeld nimmt, es zu einem php skript schickt (das bis jetzt nur ein platzhalter ist!), dort werden lösungen als xml zurückgeschickt und die werden dann im output feld als dropdownliste angezeigt. die dropdownliste wird beim iphone aber nicht gefüllt, aber ich sehe das "ladensymbol" im browser, also wird auf jedenfall das getippte weggesendet.
    wer es einmal testen möchte http://horn.hdtvtotal.com/download/selectformvorfuell1.html

    kann mir da jemand weiterhelfen, wie man fürs iphone javascript schreiben muss? ich hoffe, dass man es auch einfach in das bestehende integrieren kann und ich jetzt nicht üfr jeden browser etwas eigenes schreiben muss.

    grüße, Andreas
     
  2. gKar

    gKar Maunzenapfel

    Dabei seit:
    25.06.08
    Beiträge:
    5.362
    Teste mal mit Desktop-Safari (ggf. debuggen), das dürfte dann ja eigentlich auch nicht gehen.

    Ich bin mir derzeit nicht ganz sicher, aber ich schätze mal, man kann nicht einfach zu einem Array objOutput.options auf Deine Weise Elemente hinzufügen (indem man einfach einen Index angibt und etwas zuweist). Zumindest in den mir bekannten Sprachen muss man erstmal ein Array der passenden Größe erzeugen.

    Bzw. ich nutze in solchem Ajax-Zusammenhang eher Code wie den folgenden:
    Code:
    function appendToSelect(select, value, content) {
        var opt;
        opt = document.createElement("option");
        opt.value = value;
        opt.appendChild(document.createTextNode(content));    
        select.appendChild(opt);
    }
    
     
  3. bezierkurve

    bezierkurve Danziger Kant

    Dabei seit:
    12.06.05
    Beiträge:
    3.861
  4. hornig

    hornig Empire

    Dabei seit:
    12.08.08
    Beiträge:
    84
    moien,

    so, ich hab nun was umgebaut und es geht nun. oder ist das bei euch anders? konnte nur mit firefox, ie un diphone browser testen.

    Code:
    [COLOR=#000080]<html>[/COLOR]
    [COLOR=#000080]<head>[/COLOR]
    [COLOR=#800000]<script type=[COLOR=#0000FF]"text/javascript"[/COLOR]>[/COLOR]
    var objInput, objOutput;
    var objXMLHTTP, blnBrowserSupportsAJAX = true;
       try
       {
           objXMLHTTP = new XMLHttpRequest();
       }
       catch(e)
       {
           try
           {
               objXMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
           }
           catch(e)
           {
               try
               {
                   objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
               }
               catch(e)
               {
                   blnBrowserSupportsAJAX = false;
                   objOutput.style.display = "none"; // mach das select unsichtbar, wenn kein ajax geht
               }
           }
       }
    function init()
    {
        objInput = document.getElementById("input");
        objOutput = document.getElementById("output");
    }
     
    function fill () {
        if(objXMLHTTP.readyState == 0 || objXMLHTTP.readyState == 4)
        {
           objXMLHTTP.open("GET", "http://horn.hdtvtotal.com/download/select3.php?q=" + encodeURIComponent(objInput.value), true);
           objXMLHTTP.onreadystatechange = XMLHTTP_onreadystatechange;
           objXMLHTTP.send(null);
        }
    }
    function XMLHTTP_onreadystatechange()
    {
        if(objXMLHTTP.readyState == 4)
        {
           // source: http://www.captain.at/howto-ajax-xml-javascript.php
           var root = objXMLHTTP.responseXML.getElementsByTagName('suggestions')[0];
    
           var options = root.getElementsByTagName("option");
           for (var i = 0 ; i [COLOR=#000080]< options.length ; i++) {
             var name = options[i].getElementsByTagName("name")[0].firstChild.nodeValue;
             var value = options[i].getElementsByTagName("value")[0].firstChild.nodeValue;
             //alert("value = " + value + " name = " + name);
    
             objOutput.options[i] = new Option(name,value,false,false);
           }
        }
    }
    </script>[/COLOR]
    
    
    
    [COLOR=#000080]</head>[/COLOR]
    [COLOR=#000080]<body onload=[COLOR=#0000FF]"init()"[/COLOR]>[/COLOR]
    [COLOR=#FF8000]<form name=[COLOR=#0000FF]"form1"[/COLOR] method=[COLOR=#0000FF]"post"[/COLOR] action=[COLOR=#0000FF]"create_waggle_link.php"[/COLOR]>[/COLOR]
      [COLOR=#FF8000]<label>[/COLOR]1. Input
      [COLOR=#FF8000]<input type=[COLOR=#0000FF]"text"[/COLOR] name=[COLOR=#0000FF]"input"[/COLOR] id=[COLOR=#0000FF]"input"[/COLOR] onkeyup=[COLOR=#0000FF]"fill(this.value)"[/COLOR]>[/COLOR]
      [COLOR=#FF8000]</label>[/COLOR]
      [COLOR=#FF8000]<label>[/COLOR]2. Output
      [COLOR=#FF8000]<select name=[COLOR=#0000FF]"output"[/COLOR] id=[COLOR=#0000FF]"output"[/COLOR]>[/COLOR]
      [COLOR=#FF8000]</select>[/COLOR]
      [COLOR=#FF8000]</label>[/COLOR]
      [COLOR=#FF8000]<input type = "submit" name = "submit">[/COLOR]
    [COLOR=#FF8000]</form>[/COLOR]
    [COLOR=#000080]</body>[/COLOR]
    [COLOR=#000080]</html>[/COLOR]
    http://horn.hdtvtotal.com/download/neu1.html

    grüße, Andreas
     

Diese Seite empfehlen