Phonegap 确认警报
Posted
技术标签:
【中文标题】Phonegap 确认警报【英文标题】:Phonegap confirmation alert 【发布时间】:2012-12-27 02:17:56 【问题描述】:我尝试将以下代码放入 html 并运行它,然后将其上传到我的服务器并在我的 iPhone 的 Safari 浏览器中打开链接,然后单击显示确认并没有弹出窗口!有人可以帮忙吗?
<!DOCTYPE html>
<html>
<head>
<title>Notification Example</title>
<script type="text/javascript" charset="utf-8" src="http://mobile-web-development-with-phonegap.eclipselabs.org.codespot.com/svn-history/r99/trunk/com.mds.apg/resources/phonegap/js/phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for PhoneGap to load
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is ready
function onDeviceReady()
// Empty
// process the confirmation dialog result
function onConfirm(button)
alert('You selected button ' + button);
// Show a custom confirmation dialog
function showConfirm()
navigator.notification.confirm(
'You are the winner!', // message
onConfirm, // callback to invoke with index of button pressed
'Game Over', // title
'Restart,Exit' // buttonLabels
);
</script>
</head>
<body>
<p><a href="#" onclick="showConfirm(); return false;">Show Confirm</a></p>
</body>
</html>
【问题讨论】:
您正在尝试从浏览器中使用 Phonegap API。只有当您使用 Phonegap 制作本机应用程序时,它们才会起作用。确保您了解 Phonegap 是什么。 【参考方案1】:您使用的代码 (navigator.notification.confirm
) 专门用于移动平台,它旨在在 PhoneGap 移动应用程序中运行。如果您想在将浏览器编译到应用程序之前测试其对话框/确认消息,我建议使用混合方法来检测应用程序的环境并使用本机 confirm(message)
或 PhoneGap 特定的通知 API .下面是一个一直为我工作的示例对象:
/**
* The object encapsulates messaging functionality to work both in PhoneGap and
* browser environment.
* @author Zorayr Khalapyan
*
*/
var MessageDialogController = (function ()
var that = ;
/**
* Invokes the method 'fun' if it is a valid function. In case the function
* method is null, or undefined then the error will be silently ignored.
*
* @param fun the name of the function to be invoked.
* @param args the arguments to pass to the callback function.
*/
var invoke = function( fun, args )
if( fun && typeof fun === 'function' )
fun( args );
;
that.showMessage = function( message, callback, title, buttonName )
title = title || "DEFAULT_TITLE";
buttonName = buttonName || 'OK';
if( navigator.notification && navigator.notification.alert )
navigator.notification.alert(
message, // message
callback, // callback
title, // title
buttonName // buttonName
);
else
alert( message );
invoke( callback );
;
that.showConfirm = function( message, callback, buttonLabels, title )
//Set default values if not specified by the user.
buttonLabels = buttonLabels || 'OK,Cancel';
var buttonList = buttonLabels.split(',');
title = title || "DEFAULT TITLE";
//Use Cordova version of the confirm box if possible.
if (navigator.notification && navigator.notification.confirm)
var _callback = function (index)
if ( callback )
//The ordering of the buttons are different on ios vs. android.
if(navigator.userAgent.match(/(iPhone|iPod|iPad)/))
index = buttonList.length - index;
callback( index == 1 );
;
navigator.notification.confirm(
message, // message
_callback, // callback
title, // title
buttonLabels // buttonName
);
//Default to the usual JS confirm method.
else
invoke( callback, confirm( message ) );
;
return that;
)();
希望这会有所帮助!如果您有任何问题,请告诉我。
【讨论】:
我在哪里插入你的代码?我正在使用Phonegap html,您可以上传一个示例模板文件以便我测试和学习。 将代码放在 JavaScript 文件中,并通过 我确实将 js 导入到 html 中,弹出调用 MessageDialogController.showConfirm("Hello World") 时遇到问题 您能提供一个示例 html 代码吗? 效果很好,除了确认回调!我在test = MessageDialogController.showConfirm("Confirm") console.log(test)
上未定义...有什么想法吗?
好的.. 所以我发现 phonegap 控件可以与回调一起使用。这工作MessageDialogController.showConfirm("Message",function(data)console.log(data),'OK,Cancel','Title')
以上是关于Phonegap 确认警报的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 警报弹出在 IOS 中无法用于 phonegap