最近学习phonegap收集的几个小技巧

本文介绍了使用PhoneGap进行混合应用开发的一些实用技巧,包括解决加载外部资源报错的问题、添加启动画面及全屏显示的方法、检测用户是否通过主屏启动应用、阻止HTML5表单验证、获取设备分辨率及检测网络状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里使用的是phonegap1.6.0

1.解决phonegap加载外部资源报错问题
当你使用Eclipse做Phonegap混合开发时,在html页面加载外部资源时会有报错消息,
解决方案非常简单,你需要为phonegap添加一个外部url白名单即可,
你可以在/res/xml/cordova.xml文件中添加,示例如下:

<?xml version="1.0" encoding="utf-8"?>
<cordova>
    <access origin=" http://127.0.0.1 *"/>
    <access origin=" http:// *.niutian365.com"/>
    <log level="DEBUG"/>
</cordova>

2.添加启动画面及全屏显示
package come.phonegap.niutian365app;

import android.os.Bundle;
import org.apache.cordova.*;
import android.view.Window;
import android.view.WindowManager;

public class webapp extends DroidGap {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setFullScreen();//全屏显示 这行需要加在super.loadUrl之前
        super.setIntegerProperty("splashscreen", R.drawable.bg);//显示启动画面 图片为res/drawable/bg.png这里省略图片后缀
      super.loadUrl("file:///android_asset/www/index.html",2000);//延时加载主页面 以防止资源加载不成功
    }
    
    public void setFullScreen() {
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);//清除FLAG
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
   }
}

3.如何检测用户是通过主屏启动你的webapp
看过Apple webapp API的同学都知道iOS为safari提供了一个将当前页面添加主屏的功能,
按下iphone\ipod\ipod touch底部工具中的小加号,或者ipad顶部左侧的小加号,就可以将当前的页面添加到设备的主屏,
在设备的主屏会自动增加一个当前页面的启动图标,点击该启动图标就可以快速、便捷的启动你的webapp。
从主屏启动的webapp和浏览器访问你的webapp最大的区别是它清除了浏览器上方和下方的工具条,这样你的webapp就更加像是nativeapp了,
还有一个区别是window对像中的navigator子对象的一个standalone属性。iOS中浏览器直接访问站点时,navigator.standalone为false,
从主屏启动webapp时,navigator.standalone为true, 我们可以通过navigator.standalone这个属性获知用户当前是否是从主屏访问我们的webapp的。
在Android中从来没有添加到主屏这回事!

4.如何阻止客户端(浏览器)对HTML5表单的校验?
有时候开发者可能又想使用HTML5的新表单特性,但是呢又暂不想使用HTML5的表单自动校验功能(毕竟暂时还不太成熟),怎么办呢?我们不妨在该表单上添加novalidate属性
<form action="#" method="post" novalidate>

可阅读 http://www.w3.org/TR/html5/forms.html #attr-fs-novalidate
5.如何获取移动设备的分辩率
有时候我们可能需要根据不同的设备分辩率做不同的业务处理,我们可以通过 devicePixelRatio
var ratio = window.devicePixelRatio,width = window.screen.width * ratio;

6.检测网络时返回null
首先需要res/xml/plugins.xml修改name="Network Status" 中间的空格去掉
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager"/>

复制内容到剪贴板 程序代码 程序代码
< !DOCTYPE HTML >
< html >
<head >
<meta content = "text/html;charset=utf-8" http -equiv = "Content-Type" / >
<meta name = "viewport" content = "height=device-height,width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" / >
<meta name = "apple-mobile-web-app-capable" content = "yes"  / >
<meta name = "apple-mobile-web-app-status-bar-style" content = "black"  / > 
<title >测试demo < /title >
<script  type = "text/javascript" charset = "utf-8" src = "cordova-1.6.0.js" > < /script >
<script  type = "text/javascript" charset = "utf-8" >
    
    document .addEventListener ( "deviceready" , onDeviceReady ,  false ) ; 

     function onDeviceReady ( )  {
        checkConnection ( ) ;
        document .addEventListener ( "backbutton" , eventBackButton ,  false ) ;  //返回键
        window.addEventListener("orientationchange", orientationChange, true);
    }
    function orientationChange(e) {
      var orientation = "portrait";
      if (window.orientation == -90 || window.orientation == 90) orientation = "landscape";
      alert(orientation);
  }
    function checkConnection() {
      var networkState = navigator.network.connection.type;
        if( networkState == Connection.NONE ) {
            navigator.notification.confirm('请确认网络连接已经开启', showAlert , '提示', '确定');
        }
  }
  function showAlert(button) {
          if( button==1 ) {
              navigator.app.exitApp();
          }
          return false;
  }
    function eventBackButton(){
        navigator.notification.confirm('确认退出?', showConfirm, '退出软件', '确定,取消');
    }
    function showConfirm(button) {
        if( button==1 ) {
            document.removeEventListener("backbutton", eventBackButton, false); //注销返回键
            navigator.app.exitApp();
        }
    }
</script>
</head>
<body>
    <div id='container'>
        
    </div>
</body>
</html>
内容概要:本文深入探讨了金属氢化物(MH)储氢系统在燃料电池汽车中的应用,通过建立吸收/释放氢气的动态模型和热交换模型,结合实验测试分析了不同反应条件下的性能表现。研究表明,低温环境有利于氢气吸收,高温则促进氢气释放;提高氢气流速和降低储氢材料体积分数能提升系统效率。论文还详细介绍了换热系统结构、动态性能数学模型、吸放氢特性仿真分析、热交换系统优化设计、系统控制策略优化以及工程验证与误差分析。此外,通过三维动态建模、换热结构对比分析、系统级性能优化等手段,进一步验证了金属氢化物储氢系统的关键性能特征,并提出了具体的优化设计方案。 适用人群:从事氢能技术研发的科研人员、工程师及相关领域的研究生。 使用场景及目标:①为储氢罐热管理设计提供理论依据;②推动车载储氢技术的发展;③为金属氢化物储氢系统的工程应用提供量化依据;④优化储氢系统的操作参数和结构设计。 其他说明:该研究不仅通过建模仿真全面验证了论文实验结论,还提出了具体的操作参数优化建议,如吸氢阶段维持25-30°C,氢气流速0.012g/s;放氢阶段快速升温至70-75°C,水速18-20g/min。同时,文章还强调了安全考虑,如最高工作压力限制在5bar以下,温度传感器冗余设计等。未来的研究方向包括多尺度建模、新型换热结构和智能控制等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值