1. 程式人生 > >phonegap監聽backbutton點選事件後,其他頁面點選回退鍵出現無反應現象

phonegap監聽backbutton點選事件後,其他頁面點選回退鍵出現無反應現象

phonegap版本:4.2.0 問題描述: 比如我們有三個頁面,分別是main.html,page1.html,page2.html。我們有這樣的需求:當在main.html頁面點選回退鍵時要退出程式(預設是返回上一頁),在page1.html或者page2.html上點回退鍵依然是返回上一頁。自然而然,我們想到的是在main.html頁面加上回退鍵監聽事件,捕捉到後退出程式。於是我在main.html頁面加上了下面的程式碼
document.addEventListener("backbutton", onBackKeyDown, false);
var shouldExit = false;
function onBackKeyDown() {
    if (shouldExit) {
        navigator.app.exitApp();
    } else {
        shouldExit = true;
        window.plugins.toast.showShortBottom('再點選一次退出程式!', function(){}, function(){});
        setInterval(function(){
            shouldExit = false;
        }, 3000);
    }
}
在main.html頁面測試,點選兩次返回鍵退出程式,沒問題。 但是,但是。。。我從main.html點選連結跳到page1.html或者page2.html後,再點選回退鍵竟然回不去了,也就是點選回退鍵在除了main.html這個頁面以外都沒反應了! 後來看了下phonegap的程式碼,發現是這樣: 第一次繫結backbutton的監聽函式後,cordova.js就會通知app,backbutton事件被重寫了,所以不管載入什麼頁面app預設的backbutton事件都不會觸發了,要通過cordova.js告訴app解除backbutton重寫。 解決辦法: 查了很多資料發現沒有很好的解決辦法,最後我的解決方法就是在每個頁面都載入cordova.js,然後在cordova.js的初始化方法裡先解除backbutton事件的重寫,這樣在沒有監聽backbutton事件的頁面,點選回退鍵依然會觸發預設事件(返回上一頁)

大家如果有更好的方法,也歡迎探討。個人郵箱[email protected]

相關推薦

phonegapbackbutton事件其他頁面退出現反應現象

phonegap版本:4.2.0 問題描述: 比如我們有三個頁面,分別是main.html,page1.html,page2.html。我們有這樣的需求:當在main.html頁面點選回退鍵時要退出程式(預設是返回上一頁),在page1.html或者page2.html上

用jquery 繫結一個按鈕click事件第一次一切正常第二次竟然執行兩次以後越來越多

用jquery  繫結一個按鈕click事件後,第一次點選後,一切正常,第二次點選,竟然執行兩次,以後越來越多。 後來檢視文件發現  jquery click  不是 替換原有的function  而是接著新增,所以才會執行次數越來越多。 這有就可以在新增之前要先解除cli

用jquery 繫結一個按鈕click事件第一次一切正常第二次竟然執行兩次以後越來越多

用jquery  繫結一個按鈕click事件後,第一次點選後,一切正常,第二次點選,竟然執行兩次,以後越來越多, 後來檢視文件發現  jquery click  不是 替換原有的function  而是接著新增,所以才

pan手勢對view的上下左右滑動利用關聯物件在block中觸發view的事件(附手勢大全)

內容目錄: 在block中觸發view的點選事件 利用pan手勢,監聽對view的上下左右滑動 各種手勢的簡單實現 解決手勢衝突 一、在block中觸發view的點選事件 首先建立一個UIView的分類,下面是標頭檔案中

框 省市區 聯動(input的change事件

默認 屬性。 gen his mpat image 內容 multi 發的 需求:省市區三級包含復選框按鈕以及文字描述。點擊文字顯示對應的下級地區,點擊復選框選擇對應的下級區域勾選。 分析:監聽input的change事件當點擊復選框省 選擇對應的第一個市區,同時默認選

FloatingActionButton實現事件響應

最近做一個App用到了FloatingActionButton,可是在實現點選事件的時候卻出了點問題。 FloatingActionButton實現點選事件之後,在onClick()函式中實現的程式碼邏輯卻沒有執行,然後就很茫然,這麼簡單的東西怎麼會出錯,然後就找了好久,最後才發現還真的是

標籤事件的操作

其實,也不知道怎麼去給文章命名,就簡單的記錄下我遇到的問題吧,不多說,上程式碼。 <a id="tab1" href="https://www.baidu.com">測試連

Vue 事件實現導航欄吸頂效果(頁面滾動定位)

所說的吸頂效果就是在頁面沒有滑動之前,導航欄的效果如下圖所示:當頁面向上滑動之後,導航欄始終固定在頁面的上方。具體程式碼:寫入事件監聽,監聽滾動條。mounted () { // 事件監聽滾動條 window.addEventListener('scroll', this.watchS

AngularJSng-repeat渲染完成事件

1.在html,加上on-finish-render-filters="completeRepeat" <li ng-repeat="categorie in result.categories" ng-click="clickCategory($index,cate

瀏覽器返回按鈕事件

監聽 app tlist alert 自己的 div listener 實現 rip pushHistory(); window.addEventListener("popstate", function(e) { /

vue使用element-ui的el-input不了鍵盤事件解決

運行 string 封裝 應該 login ring 執行 -i 隱藏 vue使用element-ui的el-input監聽不了鍵盤事件,原因應該是element-ui自身封裝了一層div在input標簽外面,把原來的事件隱藏了,所以如下代碼運行是無響應的: <el-

button按鈕觸發事件出現自動跳轉問題

跳轉 type mage ali form 出現 data info bubuko 在項目中遇到在點擊+號按鈕後出現跳轉。該button在form表單內,分析原因得知,觸發事件後button按鈕自動提交了表單,從而出現跳轉。 查找手冊得知button type有三個屬性

JQuery 當擊input的選中狀態

選中 如果 input 狀態 gpo 表現 div inpu blog 1.當點擊input元素,此元素的選中checked的值 = 此元素此時表現的選中與否的狀態。 eg:input元素開始是未選中,點擊後表現的是選中狀態,此元素的checked為true(和此元

watch 圖片加載事件 飯俠三十六商品詳情

can inner 網絡 erro sep cancel center out toa <template lang="html"> <div id="productDetailBox"> <flexbox orient="vertical"

元素屬性改變事件的方法

process text aaaaa 賦值 obj src mark `` html5 一、onchange事件只在鍵盤或者鼠標操作改變對象屬性,且失去焦點時觸發,腳本觸發無效。(就是說你在輸入框中輸入完內容,輸入完了,然後鼠標點別的地方觸發該事件)二、oninput事件o

JQ和原生JSaudio播放停止事件

music audio == img on() tex dde dev func 原生JS: function control_f(){ var audio_f = document.getElementById(‘music_f‘); var audioi

17 展訊Sprd設定-電池-手指擡起事件判斷是否有觸控事件

1. 功能 通過監聽手指擡起的事件,記錄對應時間戳,通過最近2次手指擡起時間判斷是否有觸控事件 2. 監聽手指觸控事件 package com.android.server.power; import android.content.Context; import andr

鍵盤彈出事件

工具類 public class SoftKeyboardStateHelper implements ViewTreeObserver.OnGlobalLayoutListener { public interface SoftKeyboardStateListener {

使用JS鍵盤按下事件(keydown event)

使用JS監聽鍵盤按下事件(keydown event) 1、監聽全域性鍵盤按下事件,例如監聽全域性回車事件 $(document).keydown(function(event){     if(event.keyCode == 13){       alert('你按下了Enter

jQuery滑鼠長按事件

jQuery監聽滑鼠長按事件 <script> var timeout;//用於儲存定時器的變數 //#moveLeft 表示需要監聽長按事件的元素 $("#moveLeft").mousedown(function() { timeo