爲了加速開發,我們的團隊已經習慣於直接在Chrome中測試大部分phonegap實現(因爲它幾乎全部是Javascript)。但是我們想要在Phonegap提供的ondeviceready回調中運行某些代碼(或者只在瀏覽器中的document.ready中運行)。如果我們想在兩種情況下調用不同的代碼,我們如何區分這兩種情況?如何區分PhoneGap應用程序和本機瀏覽器?
2
A
回答
1
我們遵循相同的方法,並有同樣的問題。以下是我們如何解決Android的問題(應使用WebKit瀏覽器,例如iOS)。
的理念是:
- 創建一個Java類,它說的PhoneGap是積極的。
- 將其添加到瀏覽器中的全局對象列表中。
- 編寫封裝了支票的JavaScript包裝器。
現在有些代碼。
Java類:
public class MyPhoneGap {
public boolean isActive() {
return true;
}
}
註冊這個類的一個實例與瀏覽器:
public class MyActivity extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("file:///android_asset/www/index.html");
this.appView.getSettings().setJavaScriptEnabled(true);
this.appView.addJavascriptInterface(new MyPhoneGap(), "MyPhoneGap");
}
}
JavaScript包裝:
My.PhoneGap = {
active : null,
isActive : function() {
if (!My.Util.Type.isBoolean(My.PhoneGap.active)) {
if (My.Util.Type.exists(window.MyPhoneGap)) {
if (window.MyPhoneGap.isActive()) {
My.PhoneGap.active = true;
} else {
My.PhoneGap.active = false;
}
} else {
My.PhoneGap.active = false;
}
}
return My.PhoneGap.active;
}
};
用法:
if (My.PhoneGap.isActive()) {
// Rely on PhoneGap APIs
} else {
// Use some mock/default/dummy impl
}
最後一件事:在Chrome中開發/測試非常方便,但請在真實設備上測試。性能/ API可靠性的差異是巨大的不同。
1
您可以檢查是否裝置在JavaScript
/* are we running on device or in a browser? */
this.isDevice = (typeof(device) != 'undefined');
/* if the device is not defined we assume we in a browser */
if(!this.isDevice) {
... browser code here ...
}
相關問題
- 1. 在phonegap應用程序中使用瀏覽器本地存儲
- 2. 如何區別BB瀏覽器和Webworks應用程序
- 3. 如何從phonegap應用程序導航到Firefox瀏覽器
- 4. 從瀏覽器打開本機應用程序(不是手機)
- 5. 如何檢測黑莓應用程序中的本機瀏覽器關機?
- 6. 從瀏覽器運行本機Java應用程序
- 7. 區分iPhone網絡瀏覽器和iPhone應用程序用戶代理
- 8. 在手機瀏覽器或PhoneGap應用程序之間進行檢測
- 9. 在瀏覽器中測試PhoneGap + AJAX應用程序
- 10. PhoneGap建立在應用程序瀏覽器未加載
- 11. 如何從j2me應用程序調用本地瀏覽器
- 12. 結合瀏覽器應用程序和桌面應用程序
- 13. 如何在React本機中打開應用程序內瀏覽器窗口
- 14. 使用phonegap調用本機文件瀏覽器
- 15. 谷歌登錄 - 在應用程序瀏覽器vs手機瀏覽器
- 16. 如何將瀏覽器和我的web應用程序
- 17. 如何從外部鏈接的瀏覽字段應用程序打開黑莓本機瀏覽器
- 18. Dashcode區分iPad和iPhone瀏覽器
- 19. 啓動瀏覽器(Safari瀏覽器)我的應用程序
- 20. 瀏覽器到Android應用程序到瀏覽器
- 21. 僅打開瀏覽器的應用程序瀏覽器
- 22. 如何防止在Web瀏覽器中關閉XBAP瀏覽器應用程序
- 23. 谷歌服務器如何區分瀏覽器和HtmlUnit?
- 24. 如何使用phonegap成爲整個本機ios應用程序的一部分
- 25. 如何在手機本身上調試phonegap android應用程序
- 26. Android應用程序中的Android本機瀏覽器和WebView在功能上有什麼區別?
- 27. 使用PhoneGap和PHP的iPhone本機應用程序
- 28. 瀏覽器「幫助應用程序」跨瀏覽器和操作系統
- 29. 如何將Phonegap Inapp瀏覽器內容保存到父應用程序以供脫機查看
- 30. MVVM VS WPF瀏覽器應用程序?
。出於好奇,不確定的,是否有你用來代替PhoneGap的插件addJavascriptInterface任何理由? – 2012-03-03 20:14:20
@WaynnLue PhoneGap插件是異步的,這使事情變得更加複雜。 – lexicore 2012-03-04 09:43:50