科尔多瓦的Windows Phone问题8

时间:2015-01-30 16:44:53

标签: javascript cordova windows-phone-8

我有两个问题似乎无法找到在visual studio 2013中使用cordova时的工作解决方案。在config.xml中我指定了方向应该是纵向模式,使用以下代码:

<preference name="Orientation" value="portrait" />

当我在Android上运行应用程序时,它遵循这个偏好就好了,应用程序不旋转也不使用横向模式。但是在Windows Phone 8上,它仍然会旋转到横向模式而忽略该设置。

另一个问题是我无法让导航在Windows Phone 8下正常工作。我的javascript文件包含以下代码:

(function () {
    "use strict";

    document.addEventListener('deviceready', onDeviceReady.bind(this), false);

    function onDeviceReady() {
        // Handle the Cordova pause and resume events
        document.addEventListener('pause', onPause.bind(this), false);
        document.addEventListener('resume', onResume.bind(this), false);
        document.addEventListener("backbutton", onBackKeyDown, false);
    };

    function onPause() {
        // TODO: This application has been suspended. Save application state here.
    };

    function onResume() {
        // TODO: This application has been reactivated. Restore application state here.
    };

    function onBackKeyDown() {
        history.go(-1);
        navigator.app.backHistory();
    };

})();

同样,它在Android上完美运行,但是在Windows Phone 8上,似乎根本没有调用后退按钮事件。我放在函数中的任何东西似乎都没有运行。所以它似乎忽略了听众或不使用它。

有关如何使用cordova为Windows Phone 8正常运行此代码的任何想法?

2 个答案:

答案 0 :(得分:2)

关于方向问题:看来Cordova在创建Visual Studio项目时正在删除config.xml方向设置。在package.phone.appxmanifest文件中(对于WP 8.1),您希望在&lt; Application&gt;内部使用它。部分:

<m3:InitialRotationPreference>
    <m3:Rotation Preference="portrait" />
</m3:InitialRotationPreference>

并在package.windows80.appxmanifest中就是这样:

<InitialRotationPreference>
    <Rotation Preference="portrait" />
</InitialRotationPreference>

您也可以在初始化应用时以编程方式对其进行设置,这是我这样做的方式,从那时起,每当我删除/添加Windows平台时,我都不必编辑appxmanifest。

Windows 8.1(Javascript):

if (typeof MSApp !== "undefined") {
    Windows.Graphics.Display.DisplayInformation.autoRotationPreferences =
        Windows.Graphics.Display.DisplayOrientations.portrait;
}

Windows Phone 8(C#):

Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences = 
    Windows.Graphics.Display.DisplayOrientations.Portrait;

答案 1 :(得分:1)

我找到了一种让后退按钮与cordova和wp8.1配合使用的方法。这需要使用WinJS框架。

在ondeviceready函数中使用以下代码:

if (device.platform == "windows") {
    // Get the back button working in WP8.1
    WinJS.Application.onbackclick = function () {
        onBackKeyDown();
        return true; // This line is important, without it the app closes.
    }
}
else {
    document.addEventListener("backbutton", onBackKeyDown, false);
}

然后创建一个onBackKeyDown函数来处理调用:

function onBackKeyDown() {
    // Back key pressed, do something here
};