gpt4 book ai didi

cordova - Phonegap 代码作为 Web 应用程序

转载 作者:行者123 更新时间:2023-12-02 11:18:26 26 4
gpt4 key购买 nike

我正在考虑将我的phonegap html、css 和js 代码重新用作网络应用程序。我将仔细检查并删除所有仅限移动设备的功能。

目的是拥有一个提供一些移动应用程序功能的网络应用程序,我目前很少使用移动设备功能。但我猜维护我的移动应用程序代码的每个版本都会很麻烦。

你们以前尝试过这个吗?有什么建议吗?

最佳答案

通过响应式设计,您的phonegap代码应该可以在几乎所有设备上运行。了解它正在运行的设备(设备和操作系统)非常重要,以便您可以做出相应的响应。我建立了一个window.deviceInfo预先对象包含以下信息:

  • window.deviceInfo.type :handheld , tablet , desktop
  • window.deviceInfo.brand :ios , android , microsoft , webos , blackberry
  • window.deviceInfo.mode :browser , standalone , webview
  • window.deviceInfo.mobile :true , false
  • window.deviceInfo.phonegap :true , false

我使用单个容器<div>viewport创建我的响应式容器并根据其所在的设备调整其大小。

演示: jsFiddle

这是设置所有内容的初始化代码:

initializeEnvironment();
initializeDimensions();
initializePhoneGap( function () {
//start app
} );

首先我设置window.deviceInfo .

function initializeEnvironment() {
//window.deviceInfo.type: handheld, tablet, desktop
//window.deviceInfo.brand: ios, android, microsoft, webos, blackberry
//window.deviceInfo.mode: browser, standalone, webview
//window.deviceInfo.mobile: true, false
//window.deviceInfo.phonegap: true, false

var userAgent = window.navigator.userAgent.toLowerCase();
window.deviceInfo = {};

if ( /ipad/.test( userAgent ) || ( /android/.test( userAgent ) && !/mobile/.test( userAgent ) ) ) {
window.deviceInfo.type = 'tablet';
} else if ( /iphone|ipod|webos|blackberry|android/.test( userAgent ) ) {
window.deviceInfo.type = 'handheld';
} else {
window.deviceInfo.type = 'desktop';
};

if ( /iphone|ipod|ipad/.test( userAgent ) ) {
var safari = /safari/.test( userAgent );
window.deviceInfo.brand = 'ios';
if ( window.navigator.standalone ) {
window.deviceInfo.mode = 'standalone';
} else if ( safari ) {
window.deviceInfo.mode = 'browser';
} else if ( !safari ) {
window.deviceInfo.mode = 'webview';
};
} else if ( /android/.test( userAgent ) ) {
window.deviceInfo.brand = 'android';
window.deviceInfo.mode = 'browser';
} else if ( /webos/.test( userAgent ) ) {
window.deviceInfo.brand = 'webos';
window.deviceInfo.mode = 'browser';
} else if ( /blackberry/.test( userAgent ) ) {
window.deviceInfo.brand = 'blackberry';
window.deviceInfo.mode = 'browser';
} else {
window.deviceInfo.brand = 'unknown';
window.deviceInfo.mode = 'browser';
};
window.deviceInfo.mobile = ( window.deviceInfo.type == 'handheld' || window.deviceInfo.type == 'tablet' );
};

然后我调整 viewport 的大小以及任何其他需要它的东西。移动设备使用window.innerWidthwindow.innerHeight占据全屏。

function initializeDimensions() {
var viewport = document.getElementById( 'viewport' );
if ( window.deviceInfo.mobile ) {
viewport.style.width = window.innerWidth + 'px';
viewport.style.height = window.innerHeight + 'px';
} else {
//requirements for your desktop layout may be different than full screen
viewport.style.width = '300px';
viewport.style.height = '300px';
};
//set individual ui element sizes here
};

最后,我使用window.device (请注意,这与我创建的 deviceInfo 对象不同)以验证phonegap 是否可用并准备就绪。而不是依赖挑剔的deviceready事件,当我的代码在应该运行phonegap的设备上运行时,我会轮询该对象。当 initializePhoneGap()回调被调用,应用程序已准备好启动。

在整个应用程序中,我将phonegap功能包装在 if( window.deviceInfo.phonegap ) {} 中.

function initializePhoneGap( complete ) {
if ( window.deviceInfo.brand == 'ios' && window.deviceInfo.mode != 'webview' ) {
window.deviceInfo.phonegap = false;
complete();
} else if ( window.deviceInfo.mobile ) {
var timer = window.setInterval( function () {
if ( window.device ) {
window.deviceInfo.phonegap = true;
complete();
};
}, 100 );
window.setTimeout( function () { //failsafe
if ( !window.device ) { //in webview, not in phonegap or phonegap failed
window.clearInterval( timer );
window.deviceInfo.phonegap = false;
complete();
};
}, 5000 ); //fail after 5 seconds
} else {
window.deviceInfo.phonegap = false;
complete();
};
};

关于cordova - Phonegap 代码作为 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15080785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com