2011-08-31 15 views
6

Esiste un modo per ignorare a livello di programmazione navigator.notification.alert()? Avviso quando si verifica un errore relativo ai servizi di localizzazione, ma se viene cancellato, preferisco ignorarlo anziché richiedere all'utente di eseguirlo manualmente.Come ignorare a livello di programmazione una notifica di PhoneGap

Qualche idea o soluzione?

Grazie!

risposta

1

Non è possibile chiudere a livello di programmazione una finestra di dialogo alert(), n.

Ciò che si potrebbe fare, tuttavia, è invece di utilizzare alert() implementare la propria sovrapposizione personalizzata che sembra/agisce in modo simile a un avviso, e quindi è possibile eliminarlo facilmente ogni volta che si desidera. Alcuni ulteriori discussione è qui:

Javascript close alert box

Modifica

Ho fatto un bit more investigation in questo e non credo più che la finestra di PhoneGap alert() è in realtà la stessa della finestra nativo JavaScript. Stanno usando alcuni trucchi intelligenti per richiamare nel codice nativo (su Android e iOS) per mostrare l'avviso.

Come tale, è possibile chiudere la finestra di dialogo a livello di codice, ma quasi certamente non direttamente dal codice JavaScript. Dovresti utilizzare alcuni trucchi simili per richiamare dal tuo JavaScript nel codice nativo, quindi individuare e chiudere la visualizzazione degli avvisi di Phone View. La prima parte potrebbe essere abbastanza difficile. La seconda parte è banale:

Hide UIAlertView programmatically?

0

Forse creare una finestra di un div o qualche altro elemento e visualizzare che per l'utente in modo da poter licenziare facilmente.

JavaScript

function geo_error() { 
    //only append error message if none exists 
    if ($('#page_container').find('.geo_error').length == 0) { 
     $('#page_container').append('<div class="geo_error">A Geolocation Error Has Occured</div>'); 
    } 
} 
function get_success(position) { 
    //hide the error message on success 
    $('#page_container').find('.geo_error').hide(); 
} 

CSS

.geo_error { 
    position: absolute; 
    top: 10px; 
    bottom: 10px; 
    left: 20px; 
    right: 20px; 
    z-index: 1000; 
} 
2

Hey ho avuto un cambiamento di file java per questo. src/android/Notification.java

aggiunto un riferimento alle dlg.create()

prima dichiarare questo ..

private AlertDialog alertbox; 

Quindi aggiungere un caso in cui si invia "respingere" da JavaScript

else if (action.equals("dismiss")) { 
    this.dismissAll(); 
} 

metodo da aggiungere:

public void dismissAll(){ 
    alertbox.dismiss(); 
} 

Ricordarsi di aggiungere lo stesso nella notifica.js nella cartella www della notifica di plugin

dismiss: function(message, completeCallback, title, buttonLabel) { 
    var _title = (title || "Alert");//Doesnt Matter! 
    var _buttonLabel = (buttonLabel || "OK");//Doesnt Matter! 
    exec(completeCallback, null, "Notification", "dismiss", [message, _title, _buttonLabel]); 
}, 

Ora aggiungere

alertbox = dlg.create(); 
alertbox.show(); 

invece di

dlg.create(); 
dlg.show(); 

in tutti i posti.

E voi siete pronti per partire chiamando

navigator.notification.dismiss("",null,""); 

Ciò respingere tutte le segnalazioni/conferma/pronta aperto.

Problemi correlati