有没有办法检查空格键是否同时跟踪鼠标的移动方向和距离等等.
这点是我要复制Photoshop按住空格键,鼠标左键并移动鼠标时的滚动方式,但无需按住鼠标左键.
如何将函数绑定到按键向下/向上事件?
它既可以绑定到整个文档,也可以绑定到单个元素,在这种情况下都可以使用.
这必须没有任何JavaScript库.我只关心最新的Firefox.特别是画布元素.
我试过这个:(FF 3.6.9 Windows 7)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test</title>
</head>
<body>
<div class="wrapper">
<canvas id="game" width="800" height="400">
</canvas>
</div>
<script type="text/javascript">
var el = document.getElementById("game");
el.onkeydown = function(evt) {
evt = evt || window.event;
alert("keydown: " + evt.keyCode);
};
el.onkeyup = function(evt) {
evt = evt || window.event;
alert("keyup: " + evt.keyCode);
};
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 是否可以使用javascript来处理刷新页面的事件?我想要的是,如果用户执行以下行为之一,请注意:
显示警告信息?
提前致谢!
我有一个5行的textarea.我想只显示一行,并且在焦点上它应显示剩余的4行.
我继承了这段代码,它似乎不是最理想的,可能不正确,因为它在窗口和文档对象上添加了事件监听器.但是,除黑莓5.0外,它正常工作.有人可以解释是否所有这些设置正确或是否有任何建议,以使其更好和/或更精简?
if (document.readyState === "complete")
callback();
else if (document.addEventListener)
{
document.addEventListener("DOMContentLoaded",callback,false);
window.addEventListener("load",callback,false);
}
else if(window.attachEvent)
{
document.attachEvent("onreadystatechange", callback);
window.attachEvent("onLoad",callback);
} else
setTimeout(callback,2000);
Run Code Online (Sandbox Code Playgroud) 我一直认为,由于JavaScript是单线程的,我可以附加事件处理程序而不必担心处理程序在执行代码时会被执行.令我惊讶的是,我发现他们可以.根据这个答案, "无响应脚本"对话框可能会导致在脚本仍在运行时引发事件.
我用以下代码测试了这个:
<script>
function loop() {
var cond;
onblur = function (event) {
cond = false;
};
cond = true;
while (cond)
;
alert('loop exited!');
}
</script>
<button onclick="loop()">loop()</button>
Run Code Online (Sandbox Code Playgroud)
在Firefox 11.0中,该功能在单击"继续"后打印"循环退出".循环似乎暂停,允许执行事件.这类似于Unix信号,它暂时改变目标线程的上下文.但它更危险,因为它允许外部状态被改变.
这是一个错误吗?我是否应该不再依赖JavaScript的单流执行模型并确保我的所有脚本都是可重入的?或者这是一个不值得追求的缺陷,尽管主流浏览器允许这种情况发生?
可能重复:
测试事件处理程序是否绑定到jQuery中的元素
试图做以下(链接是'a'标签的jQuery对象):
link.data("events") //undefined even if link has event handlers
jQuery.data(link, 'events') //undefined always also
jQuery._data(link, 'events') //undefined always also
Run Code Online (Sandbox Code Playgroud)
使用jquery-1.8.3
那么,如何检查元素是否有点击处理程序?
我遇到了问题.我有一个无限滚动的指令,我在那里听scroll事件.问题是滚动事件只在我绑定到时触发$window:
angular.element($window).bind('scroll', function () {
console.log('Gogo!'); //works!
});
element.bind('scroll', function () {
console.log('Gogo!'); //doesn't work... :(((
});
Run Code Online (Sandbox Code Playgroud)
指令在里面ng-view我找到了这个问题,看起来与我的问题非常相似 - 绑定到ng-view内的指令中的事件不起作用
谁知道怎么解决这个问题?谢谢!
我的指示:
directives.directive('scrolly', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var raw = element[0];
element.bind('scroll', function () {
if (raw.scrollTop + raw.offsetHeight > raw.scrollHeight) {
scope.$apply(attrs.scrolly);
}
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
我的看法:
<ul class="items-wrap" scrolly="showMore()">
<li class="item" ng-repeat="item in items">{{item.name}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 我只是希望得到一个共识,即JS在冒泡和捕获之间更好的事件委派模式.
现在我明白,根据特定的用例,人们可能希望使用捕获阶段而不是冒泡,反之亦然,但我想了解哪种委派模式适用于大多数一般情况以及为什么(对我而言似乎冒泡模式).
换句话说,W3C addEventListener实现背后的原因是支持冒泡模式.[仅当您指定第3个参数及其true时才会启动捕获.但是,你可以忘记第三个参数和冒泡模式被踢了]
我抬头看了看JQuery的绑定功能得到一个回答我的问题,似乎它甚至不支持捕获阶段事件(在我看来,因为IE不支持拍摄模式).
所以看起来冒泡模式是默认选择,但为什么呢?
为什么不使用jquery keypress事件检测退格?
$("#field").keypress(function(event){alert(event.which);});
Run Code Online (Sandbox Code Playgroud) javascript ×10
jquery ×4
angularjs ×1
concurrency ×1
events ×1
onload-event ×1
scroll ×1
textarea ×1