Objective C -> Javascript ausführen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Objective C -> Javascript ausführen

    Hallo,

    ich habe folgendes Problem und wäre für Hilfe dankbar :
    Ich möchte gerne via UIWebView eine Seite laden und in dieser dann Javascript ausführen.
    Dies klappt nicht.
    Vielleicht fällt ja jemandem der Fehler auf :

    Quellcode

    1. [webView stringByEvaluatingJavaScriptFromString:@"var script = document.createElement('script');"
    2. "script.type = 'text/javascript';"
    3. "script.text = \"function test() { window.alert(document.lastModified);"
    4. "}\";"
    5. ];
    6. sleep(1);
    7. [webView stringByEvaluatingJavaScriptFromString:@"test();"];
    Alles anzeigen



    die UIWebview bleibt meist schwarz.
    Ziel ist es, dass "document.lastModified" auch wieder zurückbegebe wird, aber ich wäre schon froh, wenn das bis hierhin klappen würde.
  • sieh zu dass du den javascript-source in einen NSString bekommst ;)

    danach kannst dich um den rest kümmern.
    warum fügst du aber eine funktion ein und rufst die dann separat auf?
    warum rufst du nicht einfach das auf was du haben willst?

    [webView stringByEvaluatingJavaScriptFromString:@"alert(document.lastModified);"];
  • habe das mit dem externen so versucht :

    [webView loadHTMLString:@"<script src=\"getit.js\"></script>" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];


    Die js sah so aus (bin auch froh wenns mit dem alert klappt :) ) :




    function getit(){
    var metas = document.getElementsByTagName('meta');
    for(var i=0;mLen=metas.length;i<mLen;i++){
    if(metas.getAttribute('name').toLowerCase() == 'robots'){
    return metas[i].getAttribute('content');
    }
    }
    return null;
    }





    var desc = getit();


    document.write("ok");
    document.write(desc);




    Naja hat auch nicht so geklappt.. habe mir grad wohl etwas zerschossen, ist aber gleich wieder am laufen..
    Wär stark wenns "endlich" klappt :) danke schonmal ich sag gleich bescheid :)
    [/i]
  • also ohne die Zeile

    [webView stringByEvaluatingJavaScriptFromString:@"alert(document.lastModified);"];


    läd die Page, mit jedoch bleibt es schwarz.
    habe dafür extra ein neues (clean) Projekt gestartet.
    Würde weiteren Code mal ausschließen.
    Ich versuche es mal weiter... kann ja nur was kleines sein

    hab ich vergessen etwas einzubinden ? eigentlich nicht..


    NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"document.lastModified"];

    NSLog(@"%@", result);




    läuft :) vielen Dank!!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Frankfurt ()

  • wenn ihr mir noch 1 min geben würdet..

    NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('robots')[0].getAttribute('content')"];


    wird im browser bei manueller Ausgabe ausgeführt..
    jedoch wird das im NSLog nicht ausgegeben...
    es wird an result kein Wert gegeben...




    Update : webview war nicht geladen... wenn man das nach dem laden ausführt läuft es wunderbar

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Frankfurt ()

  • gritsch schrieb:

    sieh zu dass du den javascript-source in einen NSString bekommst ;-)
    […]

    BTW: Muss er nicht. Es reicht aus, dass er es in NSString beliebiger Anzahl bekommt. Wobei ich auch nie wusste, wozu das sinnvoll ist.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?