『壹』 js怎麼自定義事件,並能讓用on事件監聽
你這個問題全部內容應該是如下吧:
在視頻播放的時候,能夠用on監聽事件的觸發專,如下:
player.on('pause',function(){ console.log('視頻暫停屬');
})
player.on('ended',function(){ console.log('視頻結束')
})
這個是什麼原理,怎麼自定義類似pause、ended的事件,並能夠用on監聽?麻煩指教
相當於來說你要維護一個事件隊列。
player對象大概有這么些屬性
{ on: func(key, callback),
emit: func(key),
events: object
}
events是一個對象,數據結構如下:
{ pause: [func, func]
}
調用on函數時,把event的key以及callback添加到events中。
調用emit函數表示相應事件觸發,根據相應的key從events中獲取相應的callback數組,依次執行函數。
『貳』 JS監聽window.open出來的子窗口的按鈕事件
//index.html
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<metahttp-equiv="X-UA-Compatible"content="IE=edge">
<title>Title</title>
<scripttype="text/javascript">
var$=document.querySelector.bind(document);
onload=function(){
$('#open').onclick=function(){
varopener=window.open('./open.html','',"width=200,height=200");
opener.onload=function(){
var_$=document.querySelector.bind(opener.document);
_$('#child_button').onclick=function(e){
alert(e.target.textContent+'clicked!');
}
}
}
}
</script>
</head>
<body>
<buttonid="open">點擊打開一個窗口</button>
</body>
</html>
//open.html
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<metahttp-equiv="X-UA-Compatible"content="IE=edge">
<title>childdocument</title>
</head>
<body>
<buttonid="child_button">innerclicktestbutton</button>
</body>
</html>
『叄』 JS window.open()打開新窗口、監聽新窗口關閉事件
使用 window 對象的 open() 方法可以打開一個新窗口。用法如下:
參數列表如下:
使用 window.closed 屬性可以檢測當前窗口是否關閉,如果關閉則返回 true,否則返回 false。
下面是一個監聽當前新開頁面該窗口的打開關閉狀態的示例
參考: https://blog.csdn.net/HeXinT/article/details/125412106
『肆』 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如何實現方法監聽
監聽方法在中的實現如下:
function addEventListener(string eventFlag, function eventFunc, [bool useCapture=false])
eventFlag : 事件名稱,如click、mouseover…
eventFunc: 綁定到事件中執行的動作
useCapture: 指定是否綁定在捕獲階段,true為是,false為否,默認為true
在事件監聽流中可以使用event.stopPropagation()來阻止事件繼續往下流
IE中使用自有的attachEvent函數綁定時間,函數定義如下:
function attachEvent(string eventFlag, function eventFunc)
eventFlag: 事件名稱,但要加上on,如onclick、onmouseover…
eventFunc: 綁定到事件中執行的動作
在事件監聽流中可以使用window.event.cacenlBubble=false來阻止事件繼續往下流
總結:addEventListener(string eventFlag, function eventFunc, [bool useCapture=false]),針對ff,chrome,safari瀏覽器,false指冒泡階段,默認為true,指捕獲階段。不過一般我們都用false。
attachEvent(string eventFlag, function eventFunc),針對ie系列、還有opera瀏覽器,少了事件處理機制的參數,只指定事件類型(別忘了on)和觸發哪個函數。
『陸』 js 怎麼監聽到頁面關閉或頁面跳轉事件
給個思路,不知道是否可行
在頁面上做一個ajax,定期訪問伺服器,當在指定時間內回不能接收到頁面的ajax心跳,認為答瀏覽器關閉了
頁面跳轉的監聽,全部使用自定定義的js函數,好象是window.location = url,url是你要跳轉的頁面,這樣執行到這個函數時,你就知道用戶要跳轉頁面,然後在這個函數里做操作
『柒』 js,如何監聽頁面中彈出文件
你是要使用同步還是非同步形式?
同步可以寫在head最後面。判斷window.screen.width/window.screen.height(要做兼容)然後通過document.write寫下不同的src的script標簽。
非同步同上判斷。不過添加腳本的話使用document.createElement來創建script標簽。賦值src。然後插入到head內(或者隨便哪裡)。通過監聽該標簽的onload事件來執行後續任務。
如果這些js文件會影響頁面渲染。就使用同步。如果不會。就使用非同步。
代碼就不寫了。兼容不知道