0

次のコードを html に入れて実行してみました。それをサーバーにアップロードし、iPhone の Safari ブラウザーでリンクを開き、[Show Confirm] をクリックしてもウィンドウがポップアップしません! 誰か助けてください。

<!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>
4

1 に答える 1

2

使用しているコード ( 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;

})();

お役に立てれば!ご不明な点がございましたら、お知らせください。

于 2013-01-13T22:41:45.180 に答える