最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to dismiss a phonegap notification programmatically - Stack Overflow

programmeradmin63浏览0评论

Is there any way to programmatically dismiss navigator.notification.alert()? I alert when there's a location services error, but if it clears, I'd prefer to dismiss it rather than require the user to do it manually.

Any ideas or solutions?

Thanks!

Is there any way to programmatically dismiss navigator.notification.alert()? I alert when there's a location services error, but if it clears, I'd prefer to dismiss it rather than require the user to do it manually.

Any ideas or solutions?

Thanks!

Share Improve this question asked Aug 31, 2011 at 0:27 InatorInator 1,0242 gold badges16 silver badges34 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

Hey i have got a change in java file for this. src/android/Notification.java

Added a reference to dlg.create()

First Declare this..

private AlertDialog alertbox;

Then add a case where you send "dismiss" from javascript

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

Method to be added :

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

Do remember to add the same in notification.js in www folder of notification plugin

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

Now add

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

instead of

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

at all the places.

And you are good to go by calling

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

This will dismiss all the alerts / confirm / prompt opened.

You can't programmatically dismiss an alert() dialog, no.

What you could do, however, is instead of using alert() implement your own custom overlay that looks/acts similarly to an alert, and then you can easily dismiss that whenever you want. Some additional discussion is here:

Javascript close alert box

Edit

I did a bit more investigation into this and I no longer believe that the Phonegap alert() dialog is actually the same as the native JavaScript dialog. They are using some clever tricks to call back into native code (on both Android and iOS) to show the alert.

As such, it may be possible to dismiss the dialog programmatically, but almost certainly not from directly within your JavaScript code. You would need to use some similar trickery to call back from your JavaScript into native code, and then locate and dismiss the Phonegap alert view. The first part may be fairly difficult. The second part is trivial:

Hide UIAlertView programmatically?

Perhaps create a dialog out of a div or some other element and display that to the user so you can dismiss it easily.

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;
}
发布评论

评论列表(0)

  1. 暂无评论