Visualizzazione risultati 1 fino 22 di 22

Discussione: Modifica bottone javascript

  1. #1
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito Modifica bottone javascript

    ciao a tutti,
    chiedo il vs aiuto per fare quanto segue:
    in una pagina ho il seguente codice:

    Codice HTML:
    <input type="button" class="button" id="esegui" value="clicca questo bottone">
    <div id="results"></div>
    
    <script src="script1.js"></script>
    <script src="script2.js"></script> 
    come si evince, cliccando il bottone viene caricato l'id "esegui" presente nello script2.js e questo mostra un messaggio nella pagina sotto il bottone, oracome faccio a fare in modo che invece di avere il bottone (che quindi dovrebbe sparire) venga richiamato l'id "esegui" dello script2.js all'apertura della pagina stessa, in modo tale che all'apertura della pagina appaia il messaggio prodotto dallo script anzichè dover cliccare sul bottone?

    grz.
    Ultima modifica di gutguy2 : 07-06-2015 alle ore 20.53.58

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Immagino che script2.js abbia dei listener all'id "esegui". Per far quel che vuoi ti è sufficiente modificare il tipo di evento, da "click" a "load".

    Ciao!

  3. #3
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    intanto grz mille per il tuo aiuto, ho provato ma non funziona secondo me sbaglio qlcs per cui posto le prime 13 righe di script2.js affinché tu mi possa indirizzare correttamente:


    $(document).ready(function () {
    // wire up button click
    $('#esegui').click(function () {
    // azione1
    if(1 && 2) {
    // azione 2
    a.b.c(e_success, f_error);
    } else {
    // azione 3
    print_a(b_(), c_(), true);
    }
    });
    });
    grz ancora
    Ultima modifica di gutguy2 : 10-06-2015 alle ore 15.03.28

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Esattamente, come vedi hai un listener "click" all'elemento con id "esegui".
    Ti è sufficiente eliminare il listener click e lasciare il resto intatto, visto che sei già dentro .ready() del documento.

    Ciao!

  5. #5
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    ancora grz per il tuo paziente e utilissimo aiuto, ho riscritto il script2.js in qst maniera:

    $(document).ready(function () {
    // azione1
    if(1 && 2) {
    // azione 2
    a.b.c(e_success, f_error);
    } else {
    // azione 3
    print_a(b_(), c_(), true);
    }
    });
    });
    e modificato l'index.html da:

    Codice HTML:
    <input type="button" class="button" id="esegui" value="clicca questo bottone">
    <div id="results"></div>
    
    <script src="script1.js"></script>
    <script src="script2.js"></script> 
    a

    Codice HTML:
    <div id="results"></div>
    
    <script src="script1.js"></script>
    <script src="script2.js"></script> 
    riporto altresì le ultime 24 righe di script2.js:

    // fine
    a.b({ 'c': risultato }, function (results, status) {
    if(status == fonte.OK) {
    if(results[0]) {
    $('#results').fadeOut(function() {
    $(this).html('<p><b>scrivi il testo riportato qui se è andato a buon fine</b></p><p><em>' + results[0].risultato + '</em></p>').fadeIn();
    })
    } else {
    error('scrivi il testo riportato qui se non è andato a buon fine.');
    }
    } else {
    error("codice errore: " + status);
    }
    });

    // se è stata riportata un'altra fonte riporta il suo url
    if(isaltrafonte) {
    $('body').append('<p><a href="http://www.url.com" target="_blank">nome dell'altra fonte</a></p>');
    }
    }

    function error(msg) {
    alert(msg);
    }
    ma non appare nulla, la pagina è vuota, dove sbaglio?
    Ultima modifica di gutguy2 : 10-06-2015 alle ore 16.42.33

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Nel codice che hai modificato:

    Codice:
    $(document).ready(function () {
    // azione1
    if(1 && 2) {
    // azione 2
    a.b.c(e_success, f_error);
    } else {
    // azione 3
    print_a(b_(), c_(), true);
    }
    });
    });
    Le parentesi colorate in rosso erano riferite all'evento .click che hai eliminato. Quindi dovresti eliminare anche quelle.
    Indenta il codice per evitare questi errori.

    In generale, se non succede nulla, guarda la console degli errori del browser. Dall'errore dovresti riuscire a capire il problema.

    Ciao!

  7. #7
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    mi da ora come errore:

    Uncaught ReferenceError: $ is not defined

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,175

    Predefinito

    Hai incluso jQuery visto che lo stai utilizzando?

    Ciao!

  9. #9
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    si, l'ho incluso nell'html, cmq grazie per il tuo prezioso aiuto, senti posso mandarti una mail con il codice completo in chiaro che facciamo prima? non voglio abusare della tua pazienza

  10. #10
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    allora includo in chiaro tutto il codice, spero di fare cosa gradita a chi servisse il reverse geocoding visto che io ci ho messo parecchie ore a trovarlo in rete, in pratica partendo dalle coordinate geografiche fornite dal browser (html5 geolocating) restituisce l'indirizzo postale del visitatore convertendolo tramite il servizio di google maps, da notare che è molto preciso (fin troppo, arriva infatti fino al numero civico, fate voi!).

    file index.html:

    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Reverse Geocoding with HTML5</title>
    </head>
    <body>
    <input type="button" class="button" id="go" value="Reverse HTML5 Geolocation">
    <div id="results"></div>
    <script src="jquery-2.1.4.js"></script>
    <script src="geoip.js"></script>
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script src="script.js"></script>
    </body>
    </html>
    script.js:

    $(document).ready(function () {
    // wire up button click
    $('#go').click(function () {
    // test for presence of geolocation
    if(navigator && navigator.geolocation) {
    // make the request for the user's position
    navigator.geolocation.getCurrentPosition(geo_succe ss, geo_error);
    } else {
    // use MaxMind IP to location API fallback
    printAddress(geoip_latitude(), geoip_longitude(), true);
    }
    });
    });


    function geo_success(position) {
    printAddress(position.coords.latitude, position.coords.longitude);
    }

    function geo_error(err) {
    // instead of displaying an error, fall back to MaxMind IP to location library
    printAddress(geoip_latitude(), geoip_longitude(), true);
    }

    // use Google Maps API to reverse geocode our location
    function printAddress(latitude, longitude, isMaxMind) {
    // set up the Geocoder object
    var geocoder = new google.maps.Geocoder();

    // turn coordinates into an object
    var yourLocation = new google.maps.LatLng(latitude, longitude);

    // find out info about our location
    geocoder.geocode({ 'latLng': yourLocation }, function (results, status) {
    if(status == google.maps.GeocoderStatus.OK) {
    if(results[0]) {
    $('#results').fadeOut(function() {
    $(this).html('<p><b>La tua localit&agrave; &egrave;:</b></p><p><em>' + results[0].formatted_address + '</em></p>').fadeIn();
    })
    } else {
    error('Google non ha trovato nulla.');
    }
    } else {
    error("Reverse Geocoding fallito: " + status);
    }
    });

    // if we used MaxMind for location, add attribution link
    if(isMaxMind) {
    $('body').append('<p><a href="http://www.maxmind.com" target="_blank">Servizio di conversione da IP a localit&agrave; fornito da MaxMind</a></p>');
    }
    }

    function error(msg) {
    alert(msg);
    }
    spero tu mi possa aiutare, come detto ora ho un bottone che se cliccato restituisce l'indirizzo postale del visitatore, vorrei invece che ciò avenisse automaticamente all'apertura della pagina, senza dover necessarimanete cliccare sul bottone quindi, grazie ancora.

  11. #11
    Guest

    Predefinito

    Prova questo...copia e incolla, non so se è quello che intendi, ciao

    Codice:
    $(document).ready(function () {
    // wire up button click
    //$('#go').click(function () {
    // test for presence of geolocation
    if(navigator && navigator.geolocation) {
    // make the request for the user's position
    navigator.geolocation.getCurrentPosition(geo_success, geo_error);
    } else {
    // use MaxMind IP to location API fallback
    printAddress(geoip_latitude(), geoip_longitude(), true);
    }
    //});
    });
    
    
    function geo_success(position) {
    printAddress(position.coords.latitude, position.coords.longitude);
    }
    
    function geo_error(err) {
    // instead of displaying an error, fall back to MaxMind IP to location library
    printAddress(geoip_latitude(), geoip_longitude(), true);
    }
    
    // use Google Maps API to reverse geocode our location
    function printAddress(latitude, longitude, isMaxMind) {
    // set up the Geocoder object
    var geocoder = new google.maps.Geocoder();
    
    // turn coordinates into an object
    var yourLocation = new google.maps.LatLng(latitude, longitude);
    
    // find out info about our location
    geocoder.geocode({ 'latLng': yourLocation }, function (results, status) {
    if(status == google.maps.GeocoderStatus.OK) {
    if(results[0]) {
    $('#results').fadeOut(function() {
    $(this).html('<p><b>La tua localit&agrave; &egrave;:</b></p><p><em>' + results[0].formatted_address + '</em></p>').fadeIn();
    })
    } else {
    error('Google non ha trovato nulla.');
    }
    } else {
    error("Reverse Geocoding fallito: " + status);
    }
    });
    
    // if we used MaxMind for location, add attribution link
    if(isMaxMind) {
    $('body').append('<p><a href="http://www.maxmind.com" target="_blank">Servizio di conversione da IP a localit&agrave; fornito da MaxMind</a></p>');
    }
    }
    
    function error(msg) {
    alert(msg);
    }
    Ultima modifica di fractalcosmo : 12-06-2015 alle ore 00.11.39

  12. #12
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    funziona!
    grazie mille, non so come ringraziarti!
    il index.html l'ho fatto come segue:

    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Reverse Geocoding with HTML5</title>
    </head>
    <body>
    <div id="go"></div>
    <div id="results"></div>
    
    <script src="jquery-2.1.4.js"></script>
    <script src="geoip.js"></script>
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script src="script.js"></script>
    
    </body>
    </html>
    penso vada bene visto che funziona, mi confermi?

    grz mille ancora

  13. #13
    Guest

    Predefinito

    Ciao, bene il problema era quel $('#go') come ti diceva Alemoppo, poi ho notato che nel codice postato da te c'era un errore di distrazione al success e all error, anche l'html va bene, se vuoi puoi anche cancellare questo:

    <div id="go"></div>

    Non viene usato fai tutto al Dom ready, mentre la div results ci vuole perchè mostra il risultato della location.Ciao buon week-end.

  14. #14
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    quindi li hai sistemati tu gli errori al success e all error? se è così sei un mago! ho tolto il div go e va benissimo come da te suggerito, ultima cosa se volessi togliere i messaggi di errore, cioè fare in modo che quando non va non restituisca proprio nulla e la parte relativa a maxmind cosa devo fare? grz ancora per il tuo aiuto

  15. #15
    Guest

    Predefinito

    Io non uso la geo location però dal codice si legge che tu stai includendo le mappe di google per latitudine e longitudine

    http://maps.google.com/maps/api/js?sensor=false

    Se copi e incolli il tuo codice commentando isMaxMind e togliendolo dalla funziona printAddress, e da tutte le gestioni, cioè così, non sovrascriverlo al tuo codice, provalo e basta ho tolto isMaxMind, commenta per un attimo il tuo codice e prova questo senza cambiare l'html:

    Codice:
    $(document).ready(function () {
    // wire up button click
    // test for presence of geolocation
    if(navigator && navigator.geolocation) {
    // make the request for the user's position
        navigator.geolocation.getCurrentPosition(geo_success);
    }
    
    });
    
    
    function geo_success(position) {
        printAddress(position.coords.latitude, position.coords.longitude);
    }
    
    // use Google Maps API to reverse geocode our location
    function printAddress(latitude, longitude) {
    // set up the Geocoder object
        var geocoder = new google.maps.Geocoder();
    
    // turn coordinates into an object
        var yourLocation = new google.maps.LatLng(latitude, longitude);
    
    // find out info about our location
        geocoder.geocode({ 'latLng': yourLocation }, function (results, status) {
            if(status == google.maps.GeocoderStatus.OK) {
                if(results[0]) {
                    $('#results').fadeOut(function() {
                    $(this).html('<p><b>La tua localit&agrave; &egrave;:</b></p><p><em>' + results[0].formatted_address + '</em></p>').fadeIn();
                    })
                }
                else {
                    error('Google non ha trovato nulla.');
                }
            } 
            else{
                    error("Reverse Geocoding fallito: " + status);
            }
        });
    }
    
    function error(msg) {
        alert(msg);
    }
    Funziona, perchè stai dicendo if is navigator e geolocation e stai includendo le geolocation di google, adesso io non so MaxMind come lavora e dove hai preso questo codice, però dal codice che hai scritto c'è già una gestione di errore, cioè nel tuo codice si dice se vai in success usi le geolocation di google se vai in errore usi MaxMind...Capisci?
    Non posso sapere perchè hanno fatto così, non conoscendo MaxMind e sinceramente non usando la geolocation, prova a studiarlo un pò..Ciao

    Da quello che hai scritto c'è già una gestione, cioè se va in errore google allora si appoggia su MaxMind e appende questo

    <p><a href="http://www.maxmind.com" target="_blank">Servizio di conversione da IP a localit&agrave; fornito da MaxMind</a></p>

    Ma solo se va in errore google....Adesso non so il caso in cui potrebbe andare in errore la geolocation di google, studiatela un pò e fai delle prove, ovviamente devi avere tutti i casi....Una volta che hai testato il funzionamento sia con google sia con MaxMind allora puoi mettere un eventuale errore se vanno in errore tutti e due...Lo metti dove vuoi...metti un else.

    Tu fondamentalmente se entri in geo_error entri qui:

    function geo_error(err) {
    // instead of displaying an error, fall back to MaxMind IP to location library
    printAddress(geoip_latitude(), geoip_longitude(), true);
    }

    e chiami MaxMind...però chiami maxMind passandogli due funzioni per latitudine e longitudine e il terzo parametro a true cioè isMaxMind == true(e quindi appenderebbe il link che hai in fondo di isMaxMind) , adesso il punto è questo, quelle due funzioni, funzionano?giro di parole, ritornano dei risultati?Secondo me manca qualcosa se va in errore cioè chiama MaxMind, dovresti testare l'errore, perchè se entri in geo_error secondo me ti dirà geoip_latitude() is undefined a meno che non siano inserite negli altri script che hai nell'html(mi verrebbe da pensare lo script geoip.js, sono lì?) però non ci sono nel codice che hai messo qui.
    Bisogna sempre testare sia al success che all'error...In questo caso devi crearti la struttura che la google location va in errore e testi la MaxMind.Bisgogna sempre testare il codice e mai mettere delle righe che non servono o che non sono testate... ;)
    Ciao buona serata.

    Ps:che poi fondamentalmente c'è già la gestione di encoding fallito non hai bisogno di inserirlo....è nel printAddress però devi testare i due funzionamenti sia con google che con maxmind.
    Ultima modifica di fractalcosmo : 13-06-2015 alle ore 20.55.50

  16. #16
    Guest

    Predefinito

    Non avevo capito che volevi togliere tutto pensavo che volessi mettere un alert se non andava maxmind...comunque se vuoi togliere tutto dal codice che ti ho postato prima basta aggiornarlo così..

    Codice:
    $(document).ready(function () {
    // wire up button click
    // test for presence of geolocation
        if(navigator && navigator.geolocation) {
        // make the request for the user's position
            navigator.geolocation.getCurrentPosition(geo_success);
        }
    });
    
    function geo_success(position) {
        printAddress(position.coords.latitude, position.coords.longitude);
    }
    
    // use Google Maps API to reverse geocode our location
    function printAddress(latitude, longitude) {
    // set up the Geocoder object
        var geocoder = new google.maps.Geocoder();
    
    // turn coordinates into an object
        var yourLocation = new google.maps.LatLng(latitude, longitude);
    
    // find out info about our location
        geocoder.geocode({ 'latLng': yourLocation }, function (results, status) {
            if(status == google.maps.GeocoderStatus.OK) {
                if(results[0]) {
                    $('#results').fadeOut(function() {
                    $(this).html('<p><b>La tua localit&agrave; &egrave;:</b></p><p><em>' + results[0].formatted_address + '</em></p>').fadeIn();
                    })
                }
            } 
    
        });
    }

  17. #17
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    ok, grazie mille per tutto il tuo tempo e sopratutto per la tua pazienza, ho tolto l'errore, non mi serviva proprio tutto quell'obbrobrio
    Ultima modifica di gutguy2 : 14-06-2015 alle ore 18.06.24

  18. #18
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    senti ultima cosa, partendo dallo script sopra, se volessi invece che mostrare l'indirizzo postale (reverse geocoding) le coordinate geografiche, come posso fare?

    ho trovato per conto mio: https://developer.mozilla.org/en-US/...ng_geolocation

    grazie ancora per tutto il tuo aiuto
    Ultima modifica di gutguy2 : 14-06-2015 alle ore 18.59.36

  19. #19
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    davvero non voglio abusare, ma come faccio a togliere "il bottone" dal seguente script?

    index.html:

    Codice HTML:
    <!DOCTYPE html>
    <html>
    <head>
    
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Reverse Geocoding with HTML5</title>
    </head>
    <body>
    
    <script>
      window.onload = function() {
          setTimeout('document.getElementById('geoFindMe()').click()', 3000);
      }
    </script>
    
    <p><button onclick="geoFindMe()">Coordinate geografiche</button></p>
    <div id="out"></div>
    
    <script src="jquery-1.11.3.js"></script>
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script src="reversescript.js"></script>
    
    </body>
    </html>
    reversescript.js

    function geoFindMe() {
    var output = document.getElementById("out");

    if (!navigator.geolocation){
    output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
    return;
    }

    function success(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;

    output.innerHTML = '<a href="https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true" target="_blank">' + latitude + ',' + longitude + '</a>';
    };

    function error() {
    output.innerHTML = "Unable to retrieve your location";
    };

    output.innerHTML = "<p>Locating…</p>";

    navigator.geolocation.getCurrentPosition(success, error);
    }

  20. #20
    Guest

    Predefinito

    Ciao scusa il ritardo non avevo letto prima...puoi fare così il javascript:

    Codice:
    $(document).ready(function(){
        var output = document.getElementById("out");
        
        if (!navigator.geolocation){
            output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
            return;
        }
    
    function success(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    
    output.innerHTML = '<a href="https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true" target="_blank">' + latitude + ',' + longitude + '</a>';
    };
    
    function error() {
    output.innerHTML = "Unable to retrieve your location";
    };
    
    output.innerHTML = "<p>Locating…</p>";
    
    navigator.geolocation.getCurrentPosition(success, error);
       
    });

  21. #21
    Guest

    Predefinito

    Se invece non vuoi usare il document ready ma il window onload fai così il javascript , ciao buona serata:

    Codice:
         window.onload = function() {
          setTimeout(geoFindMe(), 3000);
      }
     function geoFindMe(){ 
    //$(document).ready(function(){
        var output = document.getElementById("out");
        
        if (!navigator.geolocation){
            output.innerHTML = "<p>Geolocation is not supported by your browser</p>";
            return;
        }
    
    function success(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    
    output.innerHTML = '<a href="https://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true" target="_blank">' + latitude + ',' + longitude + '</a>';
    };
    
    function error() {
    output.innerHTML = "Unable to retrieve your location";
    };
    
    output.innerHTML = "<p>Locating…</p>";
    
    navigator.geolocation.getCurrentPosition(success, error);
       
    //});    
      }

  22. #22
    gutguy2 non è connesso Utente
    Data registrazione
    22-12-2005
    Residenza
    BO
    Messaggi
    168

    Predefinito

    ancora non so proprio come ringraziarti, davvero grazie di tutto, a buon rendere spero (non credo putroppo però vistele mie abilità...)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •