『壹』 js 監聽瀏覽器的返回按鈕事件在安卓和ios的坑
這是ajax的一個經典問題,很多框架都提供了解決方案,重點是模擬瀏覽器的前進後退。
對於IE,可以用一個隱藏框架,對框架內容的導航會使得前進後退按鈕被觸發。
對以FF,可以用Hash,即改變http://www.url.com/#abc井號後面的部分,前進後退按鈕同樣被觸發。
這樣就能既讓瀏覽器前進後退按鈕被觸發,同時又不離開本頁面。具體方法如下:
1.resize事件 (window).resize(function() { var width = (this).width(); var height = (this).height(); });
2.js條用這個方法 function closewindow{ history.go(-1); }
3.<input type="button" value="後退" onClick="history.back();"> 或 <input type="button" value="後退" onClick="history.go(-1);">
4.window.location.replace Location對象的replace()方法將用指定的URL替換瀏覽器歷史列表中的當前URL,而不是在歷史列表中創建一個新的項,因此,就不能使用IE的後退按鈕來返回原始文檔了。 2.window.open(FF無效...
『貳』 history.pushstate;什麼意思
你要問的應該是瀏覽器的history,也就是歷史記錄;我們都知道在頁面中我們可以使用javascriptwindowhistory,後退到上一頁面,但是出於安全考慮,javascripthistory不允許修改history里已有的url鏈接(也就是歷史記錄裡面的頁面地址),但可以使用pushState(相當於進棧意思)方法往history里增加url鏈接,並且提供popState事件(相當於出棧)監聽從history棧里彈出url,所以我們就可以監聽popState事件,進行相應操作,如下:
語法:element.addEventListener(event,function,useCapture);
參數:
element:文檔節點、document、window或XMLHttpRequest
event:事件類型,如"click"或"mousedown"
function:事件觸發後調用的函數或者是實現了EventListener介面
useCapture:布爾值,用於描述事件是冒泡還是捕獲,參數可選,默認false(冒泡)
注意:event不要使用"on"前綴。例如,使用"click",而不是使用"onclick"
事件冒泡還是捕獲?
事件傳遞方式有兩種:冒泡、捕獲、
事件傳遞定義了元素觸發的順序,如果你將<p>元素插入到<div>元素中,用戶點擊<p>元素,哪個元素的"click"事件先被觸發呢?
在冒泡中,內部元素的事件會先被觸發,然後再觸發外部元素,即:<p>元素的點擊事件先觸發,然後會觸發<div>元素的點擊事件。
在捕獲中,外部元素的事件會先被觸發,然後才會觸發內部元素的事件,即:<div>元素的點擊事件先觸發,然後再觸發<p>元素的點擊事件。
addEventListener()方法可以指定"useCapture"參數來設置傳遞類型:
addEventListener(event,function,useCapture);
默認值為false,即冒泡傳遞,當值為true時,事件使用捕獲傳遞。
示例:手機端監聽物理返回鍵
pushHistory();
functionpushHistory(){
varstate={
title:"title",//可以給null值
url:"#"//可以給null值
};
window.history.pushState(state,"title","#");
}
//監聽到popState事件要執行的操作
window.addEventListener("popstate",function(e){
//該幹嘛幹嘛
},false);//false表示冒泡
以上是個人見解,看下能不能幫得上
『叄』 js怎麼監聽移動端鍵盤展開事件
目的 : 監聽移動端鍵盤展開事件
工具 : 移動端, js
思路 : 可以通過監聽窗口大小的改變來實現,當端鍵盤展開時,窗口的大小發生改變,依據此基礎進行判斷.
js 移動端關於頁面布局,如果底部有position:fixed的盒子,又有input,當軟鍵盤彈出收起都會影響頁面布局。這時候Android可以監聽resize事件,代碼如下,而iOS沒有相關事件。
方法一實現代碼:
//獲取當前頁面高度
varwinHeight=$(window).height();
$(window).resize(function(){
varthisHeight=$(this).height();
if(winHeight-thisHeight>50){
//窗口發生改變(大),故此時鍵盤彈出
//當軟鍵盤彈出,在這裡面操作
}else{
//窗口發生改變(小),故此時鍵盤收起
//當軟鍵盤收起,在此處操作
}
});
方法二:監控鍵盤
監控的方式其實篩選下來也不過兩種:
① 時鍾setInterval不停監控
② 系統級別的監控,比如鍵盤出現時候通知window一個事件,但是很遺憾現在還沒有這個事件,但是這個事件等於
input類元素獲取焦點 == 彈出虛擬鍵盤
input類元素失去焦點 == 收起虛擬鍵盤
但是我們前面已經說過,上面的原則不一定可靠,所以該種方案也未必可靠了
基於系統監控這點,我們還可以監控resize事件或者scroll事件,但是經過我的測試,setInterval表現比較好.於是,我們簡單寫一段代碼,可靠是否滿足需求:
window.alert=function(msg){
$('body').append('<div>'+msg+'</div>')
};
functionfixedWatch(el){
if(document.activeElement.nodeName=='INPUT'){
el.css('position','static');
}else{
el.css('position','fixed');
}
}
setInterval(function(){
fixedWatch($('#headerviewheader'));
},500);
如上:移動端鍵盤展開事件即可被監聽.
『肆』 js怎麼監聽安卓返回鍵
代碼如下:
<script>
//=========================PhoneGap==================================
//等待載入PhoneGap
document.addEventListener("deviceready",onDeviceReady,false);
//PhoneGap載入完畢
functiononDeviceReady(){
//按鈕事件
document.addEventListener("backbutton",eventBackButton,false);//返回鍵
}
//返回鍵
functioneventBackButton(){
if($(".classobj").is(":visible")){
alert('再點擊一次退出!');
document.removeEventListener("backbutton",eventBackButton,false);//注銷返回鍵
document.addEventListener("backbutton",exitApp,false);//綁定退出事件
//3秒後重新注冊
varintervalID=window.setInterval(function(){
window.clearInterval(intervalID);
document.removeEventListener("backbutton",exitApp,false);//注銷返回鍵
document.addEventListener("backbutton",eventBackButton,false);//返回鍵
},3000);
}else{
//navigator.app.backHistory();
}
}
functionexitApp(){
navigator.app.exitApp();
}
</script>
『伍』 如何用js代碼 控制蘋果系統中的返回鍵
開啟方式如下; 1.在桌面找到【設置】點擊進入。 2.點擊【通用】選項。 3.進入點擊【輔助功能】。 4.點擊【AssistiveTouch】進入。 5.把【AssistiveTouch】開關打開。 6.然後就可以看到屏幕右下方有個小白點,點擊一下就出現虛擬菜單了。
『陸』 js獲取安卓手機上的回退鍵的事件....
很簡單, webView 肯定是要放到一個 activity 中。 你 重寫 activity 的onkeyup 事件屏蔽掉 回退按鈕的事件就可以了。 歡迎採納
『柒』 Android webview中的js如何監聽鍵盤事件
首先,設置webView屬性:
如此,webView中就可以捕獲javascript的alert()、confirm()事件了。
『捌』 如何監聽物理按鍵函數,例如安卓的返回鍵
假 A----->B現要返A B頁面載入mui.min.js文件或者重寫返鍵
var old_back = mui.back;
mui.back = function(){
old_back();
}
面使用mui 框架使用純粹使用H5+看面文檔
『玖』 js怎麼監聽安卓返回鍵
<script>
// =========================PhoneGap==================================
// 等待載入PhoneGap
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap載入完畢
function onDeviceReady() {
// 按鈕事件
document.addEventListener("backbutton", eventBackButton, false); // 返回鍵
}
// 返回鍵
function eventBackButton() {
if($(".classobj").is(":visible")){
alert('再點擊一次退出!');
document.removeEventListener("backbutton", eventBackButton, false); // 注銷返回鍵
document.addEventListener("backbutton", exitApp, false);//綁定退出事件
// 3秒後重新注冊
var intervalID = window.setInterval(function() {
window.clearInterval(intervalID);
document.removeEventListener("backbutton", exitApp, false); // 注銷返回鍵
document.addEventListener("backbutton", eventBackButton, false); // 返回鍵
}, 3000);
}else {
//navigator.app.backHistory();
}
}
function exitApp(){
navigator.app.exitApp();
}
</script>