做了一个简单的小说系统。
在阅读小说页面使用键盘左右键翻页,回车键返回首页。
<script type="text/javascript">
document.onkeydown = jumpPage;
function jumpPage() {
var event = document.all ? window.event : arguments[0];
var prev = document.getElementById("prev").href;
var next = document.getElementById("next").href;
if (event.keyCode == 37) document.location = prev;
if (event.keyCode == 39) document.location = next;
if (event.keyCode == 13) document.location = "/";
}
</script>
但是在阅读页面,还有一个添加评论的功能,有一个多行文本框,用户有可能在添加评论时使用回车键来换行,结果导致触发上面的回车键事件,页面转向到了首面。这个代码怎么优化?在评论框中使用回车键时不触发上面的if (event.keyCode == 13) document.location = "/";。
在阅读小说页面使用键盘左右键翻页,回车键返回首页。
<script type="text/javascript">
document.onkeydown = jumpPage;
function jumpPage() {
var event = document.all ? window.event : arguments[0];
var prev = document.getElementById("prev").href;
var next = document.getElementById("next").href;
if (event.keyCode == 37) document.location = prev;
if (event.keyCode == 39) document.location = next;
if (event.keyCode == 13) document.location = "/";
}
</script>
但是在阅读页面,还有一个添加评论的功能,有一个多行文本框,用户有可能在添加评论时使用回车键来换行,结果导致触发上面的回车键事件,页面转向到了首面。这个代码怎么优化?在评论框中使用回车键时不触发上面的if (event.keyCode == 13) document.location = "/";。
评论框失去焦点时 document.onkeydown = jumpPage;
function jumpPage() {
var event = document.all ? window.event : arguments[0];
if(event.srcElement.tagName.toLowerCase()=="textarea") return;
var prev = document.getElementById("prev").href;
var next = document.getElementById("next").href;
if (event.keyCode == 37) document.location = prev;
if (event.keyCode == 39) document.location = next;
if (event.keyCode == 13) document.location = "/";
}
if (event.stopPropagation) {
// this code is for Mozilla and Opera
event.stopPropagation();
}
else if (window.event) {
// this code is for IE
window.event.cancelBubble = true;
}
阻止冒泡事件