我一直在探索为事件处理程序使用自定义函数.在这个精简的示例中,我试图在用户单击按钮时弹出警报.
但是当页面加载时,警报框会立即弹出!我究竟做错了什么?(评论部分完全相同).
如果我定义bclick()函数就好
function bclick(foo, bar){ ... }
Run Code Online (Sandbox Code Playgroud)
结果也是一样的.
头文件中的JS:
<script type="text/javascript">
var bclick = function(foo, bar){alert( foo + " " + bar + "\n");}
//$(document).ready(function(){
// $("button").click(bclick("Button","Clicked"));
// });
$("button").click(bclick("Button","Clicked"));
</script>
Run Code Online (Sandbox Code Playgroud)
正文中的相关HTML:
<button>Click Me!</button>
Run Code Online (Sandbox Code Playgroud) window.onload = ->
boxOrig1 = 10
boxOrig2 = 30
canvasW = 400
canvasH = 300
ctx = $("#canvas")[0].getContext('2d');
draw = (origin,dimension) ->
ctx.clearRect(0, 0, canvasW, canvasH)
ctx.fillStyle = 'rgb(200,0,0)'
ctx.fillRect(origin + boxOrig1, boxOrig1, dimension, dimension)
ctx.fillStyle = 'rgba(0, 0, 200, 0.5)'
ctx.fillRect(origin + boxOrig2, boxOrig2, dimension, dimension)
for m in [10..100] by 10
t = setTimeout (-> draw(m, 150)), 1000
t.clearTimeout
# draw(m,150)
# alert m
Run Code Online (Sandbox Code Playgroud)
作为练习,上面的代码是在画布上绘制一个小设计,暂停一秒,然后再向右重绘10个像素.
我可以看到,当我用警报中断循环时,机制工作正常(如最后两条注释行),但我没有得到setTimeout函数的预期行为.设计只是在超时后出现在最右边的位置,跳过两者之间的增量步骤.
我从其他例子中尝试了许多不同的方法,但它只是在融化我的大脑.有什么建议?
直到最近,我还有一堆虚拟网站设置如下:
<VirtualHost 127.0.0.1:1234>
...
Run Code Online (Sandbox Code Playgroud)
这适用于在我使用Linux桌面的本地计算机上进行测试.为了测试MS和资源管理器如何从我的Windows笔记本电脑显示我的页面,我将其更改为
<VirtualHost *:1234>
...
Run Code Online (Sandbox Code Playgroud)
这也很好,在我的笔记本电脑的IE 上从http:// [mylinuxservername]:1234调用网站.但是,我想将该通配符限制为本地局域网.插入任何ip,如192.nnn.nnn.nnn或192.*.*.*,其中通配符在上面导致在Windows机器上403 Forbidden.本地服务器在我的Linux机箱上仍能正常工作:
<VirtualHost 127.0.0.1:1234 192.*.*.*:1234>
...
Run Code Online (Sandbox Code Playgroud)
要么
<VirtualHost 127.0.0.1:1234 192.nnn.nnn.nnn:1234> #exact IP of laptop
...
Run Code Online (Sandbox Code Playgroud)
无论如何,我不喜欢上面第二个配置示例中的那个通配符.提示任何人?
jquery ×2
apache2 ×1
coffeescript ×1
events ×1
function ×1
javascript ×1
settimeout ×1
virtualhost ×1