如何在IE/Firefox中禁止使用者按下"Backspace"鍵回上一頁的問題,順便將結果分享給有需要的人。
作法:一般來說,在處理這樣的問題時,我們都會從"事件"(Event)這方面去著手。在瀏覽器(或一般視窗程式)中,移動/點擊滑鼠、按下鍵盤、網頁讀取完成等等動作都會造成事件被觸發,而要避免使用者進行這些行為,就要在事件被觸發的同時將其攔下,就會造成功能失效。
下面這段JavaScript可以攔截使用者按"Backspace"鍵:
<script language="JavaScript">
document.onkeydown = check;
function check(e) {
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
alert(code);
if (code == 8)
{
code = 0;
window.alert('test');
return false;
{color:#0000ff}}
return true;
{color:#0000ff}}
</script>
上面這段程式在IE中可以正常運作,但是搬到了Firefox後卻會發現頁面已經換了,警告視窗才跳出來。
這是因為在Firefox的事件處理程序與IE不同所導致的情況,換頁事件會比keydown還早發生,所以在keydown攔下事件之前,換頁事件已經先發生了,也就是說...keydown欄太慢,無效!!
解決的方法就是將keydown事件改用keypress事件,這樣在Firefox就可以正常運作了........
不過很不幸的,在IE裡面這套又行不通了,所以程式碼要加上判斷的功能,依照不同的瀏覽器做不同的事件設定:
if(window.navigator.userAgent.indexOf("MSIE")>=1)
{
document.onkeydown = check;
{color:#0000ff}}else if (window.navigator.userAgent.indexOf("Firefox")>=1){
document.onkeypress = check;
{color:#0000ff}}
function check(e){
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if (code == 8)
{
code = 0;
window.alert('請勿返回程式');
return false;
{color:#0000ff}}
return true;
{color:#0000ff}}
剛才網友詢問如何在IE/Firefox中禁止使用者按下"Backspace"鍵回上一頁的問題,順便將結果分享給有需要的人。
作法:一般來說,在處理這樣的問題時,我們都會從"事件"(Event)這方面去著手。在瀏覽器(或一般視窗程式)中,移動/點擊滑鼠、按下鍵盤、網頁讀取完成等等動作都會造成事件被觸發,而要避免使用者進行這些行為,就要在事件被觸發的同時將其攔下,就會造成功能失效。
下面這段JavaScript可以攔截使用者按"Backspace"鍵:
(IE版)
程序代碼
[color=#0000ff]<script language="JavaScript">
document.onkeydown = check;
function check(e) {
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
alert(code);
if (code == 8)
{
code = 0;
window.alert('test');
return false;
{color:#0000ff}}
return true;
{color:#0000ff}}
</script>[/color]
上面這段程式在IE中可以正常運作,但是搬到了Firefox後卻會發現頁面已經換了,警告視窗才跳出來。
這是因為在Firefox的事件處理程序與IE不同所導致的情況,換頁事件會比keydown還早發生,所以在keydown攔下事件之前,換頁事件已經先發生了,也就是說...keydown欄太慢,無效!!
解決的方法就是將keydown事件改用keypress事件,這樣在Firefox就可以正常運作了........
不過很不幸的,在IE裡面這套又行不通了,所以程式碼要加上判斷的功能,依照不同的瀏覽器做不同的事件設定:
程序代碼
if [color=#0000ff](window.navigator.userAgent.indexOf("MSIE")>=1)
{
document.onkeydown = check;
{color:#0000ff}}else if (window.navigator.userAgent.indexOf("Firefox")>=1){
document.onkeypress = check;
{color:#0000ff}}
function check(e){
var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if (code == 8)
{
code = 0;
window.alert('請勿返回程式');
return false;
{color:#0000ff}}
return true;
{color:#0000ff}}
這樣,就打造出一個能夠在IE/Firefox上使用的攔截"Backspace"的小程式了
沒有留言:
張貼留言