JavaScript futásának ellenőrzése-sürgős!
2011-08-16T12:19:26+02:00
2011-08-16T17:35:03+02:00
2022-08-04T14:00:29+02:00
FlyingV
Sziasztok, bocsánat ha volt már, de sürgős a kérdés és nem volt időm szörfölni az oldalon belül, gyakorlatilag a nicket is csak ezért regisztráltam 2 perce :)

A következő a problémám: iOS-re programozok és ott egy UIWebView-ban fut egy JavaScript. Valójában egy reklámot kell megjelenítenem.

A UIWebViewDelegate protocolnak megfelelően használom a -[webViewDidFinishLoad:] függvényt, ami arra jó, hogy értesít, ha ez a bizonyos web view befejezte a töltést. Itt szeretném átméretezni a web view-t, hogy megfelelő méretű legyen.

Igen ám, de köszönhetően almáéknak, valamilyen okból a JavaScript még fut a háttérben, mikor megkapom a 'végeztem a betöltéssel' üzenetet, és a UIWebView-ban nem tudom ellenőrizni, hogy fut-e épp JavaScript, avagy sem.. Ezek után még bőven tölti a reklám képét, ha időeltolással méretezem be, mivel letöltődött minden, helyesen méretezi át magát ez a web view. (Bocsi ha nem érthető, mi is ez a web view, meg hogy is működik ez az Objective-C-n belül, próbálom úgy leírni, hogy ez az info ne is legyen szükséges, de a magyarázathoz szerintem kell)

Az volna a kérdésem, hogy létezik-e olyan függvény a JavaScript-en belül, ami ellenőrzi, hogy az adott böngészőben (pl: egy UIWebView, ki találta volna ki? :)) ellenőrzi, fut-e JavaScript, vagy sem? Ha igen, valaki legyen kedves és egy kis magyarázat kíséretében írja le, mit kéne használnom. A UIWebView-nak van olyan függvénye, ami bemeneti paraméterként egy string-et vár (nyilván a kedves segítő által megadott JavaScript parancsokat fogom megadni), a kimenete is egy string, ezt használnám, szóval az esetleges, nem egyértelmű kimenetet is szívesen venném, ha magyarázat kísérné.

Köszönettel,
FV
Mutasd a teljes hozzászólást!
Igen, ettől tartottam... :)
Jó megoldása ennek ui. az lenne, hogy callback-ként beadod az átméretező függvényedet a betöltőnek, és az meghívja az ajax hívás success handlerének a végén.
Ha a betöltő rutin szerzője gondolt erre, akkor jól jártál. :) Ha nem, még mindig van esély a html stringbe belehegeszteni azt a plusz másfél sort, de nyilván rizikós. Mi van pl, ha változik a kód?
Mutasd a teljes hozzászólást!

  • Nincs ilyen függvény.
    A reklámot betöltő rutin is saját?
    Mutasd a teljes hozzászólást!
  • Szia, köszi a választ!

    Nem saját, de megkaptam, egy html-en keresztül a body-ba van becsomagolva, az egész html-t töltöm be string-ként.
    Mutasd a teljes hozzászólást!
  • Igen, ettől tartottam... :)
    Jó megoldása ennek ui. az lenne, hogy callback-ként beadod az átméretező függvényedet a betöltőnek, és az meghívja az ajax hívás success handlerének a végén.
    Ha a betöltő rutin szerzője gondolt erre, akkor jól jártál. :) Ha nem, még mindig van esély a html stringbe belehegeszteni azt a plusz másfél sort, de nyilván rizikós. Mi van pl, ha változik a kód?
    Mutasd a teljes hozzászólást!
  • hát, sajnos az nem megoldható. na mindegy, akkor megmondom nekik, hogy nézzék meg a válaszod és csinálják meg rendesen! :) köszi a segítséget, nekem ez a legjobb! :D

    mármint a html-be szabad belehegeszteni, csak ez jár valamiféle következménnyel? Ha nem, akkor kérlek írd le, mit kéne beírni! :)
    Mutasd a teljes hozzászólást!
  • Látatlanban nehéz megmondani, mert kérdés, hogy minden szükséges kód ott van-e a html-ben, ill. az ajax hívás jQuery-s, vagy natív JS. Ha jQuery, akkor a kód valahogy így kell, kinézzen:

    function adLoad() { //... $.ajax(URL, { //... success: function (data) { //... } }); }

    és ilyenné kéne alakítani:

    function adLoad(handler) { //... $.ajax(URL, { //... success: function (data) { //... handler(); } }); }

    Ennek az adLoad()-nak át tudod adni a saját függvényed, ami így biztos a betöltődés után fut le.
    Mutasd a teljes hozzászólást!
  • A handler() futtatása előtt azért illik persze minimum azt leellenőrizni, hogy nem undefined-e.

    if (typeof handler !== 'undefined') { handler(); }
    Mutasd a teljes hozzászólást!
abcd