我遇到的问题dragleave是当悬停该元素的子元素时会触发元素事件.此外,dragenter再次悬停父元素时不会触发.
我做了一个简化的小提琴:http://jsfiddle.net/pimvdb/HU6Mk/1/.
HTML:
<div id="drag" draggable="true">drag me</div>
<hr>
<div id="drop">
drop here
<p>child</p>
parent
</div>
Run Code Online (Sandbox Code Playgroud)
使用以下JavaScript:
$('#drop').bind({
dragenter: function() {
$(this).addClass('red');
},
dragleave: function() {
$(this).removeClass('red');
}
});
$('#drag').bind({
dragstart: function(e) {
e.allowedEffect = "copy";
e.setData("text/plain", "test");
}
});
Run Code Online (Sandbox Code Playgroud)
它应该做的是通过在div那里拖动东西时使滴红色来通知用户.这样做有效,但是如果你拖入p孩子,那dragleave就会被激发而且div不再是红色.回到跌落div也不会再次变红.有必要完全移出掉落div并再次拖回它以使其变红.
dragleave拖入子元素时是否可以防止触发?
2017更新: TL; DR,查看CSS pointer-events: none;,如下面@ HD的答案中所述,适用于现代浏览器和IE11.
我有一些<script>元素,其中一些元素依赖于其他<script>元素中的代码.我看到这个defer属性可以在这里派上用场,因为它允许在执行时推迟代码块.
为了测试它我在Chrome上执行了这个:http://jsfiddle.net/xXZMN/.
<script defer="defer">alert(2);</script>
<script>alert(1)</script>
<script defer="defer">alert(3);</script>
Run Code Online (Sandbox Code Playgroud)
但是,它提醒2 - 1 - 3.为什么不提醒1 - 2 - 3?
我想知道是否有必要使用<link rel="stylesheet" type="text/css" href=...>它<link rel="stylesheet" href=...>.该rel="stylesheet"标记的信息,这是一个样式表-所以text/css实际上并没有就我而言,添加任何东西.
HTML使用的唯一样式表格式是CSS,那么text/css对浏览器有什么"说"呢?有些网站似乎添加了type="text/css"属性(http://www.jquery.com/),而其他网站则没有(http://www.youtube.com/).
那么,什么是使用type="text/css"的<link rel="stylesheet">元素,是有必要包括它?
我目前在JavaScript和用C#编程的服务器之间有一个WebSocket.在JavaScript中,我可以使用关联数组轻松传递数据:
var data = {'test': 'val',
'test2': 'val2'};
Run Code Online (Sandbox Code Playgroud)
为了在服务器端表示这个数据对象,我使用了a Dictionary<string, string>,但这比JavaScript中的"打字更贵":
Dictionary<string, string> data = new Dictionary<string,string>();
data.Add("test", "val");
data.Add("test2", "val2");
Run Code Online (Sandbox Code Playgroud)
DictionaryC#中的关联数组是否有某种文字符号?
我setInterval每秒运行一段代码30次.这很好用,但是当我选择另一个选项卡(以便我的代码的选项卡变为非活动状态)时,由于setInterval某种原因将其设置为空闲状态.
我做了这个简化的测试用例(http://jsfiddle.net/7f6DX/3/):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
Run Code Online (Sandbox Code Playgroud)
如果您运行此代码然后切换到另一个选项卡,等待几秒钟然后返回,动画将继续在您切换到另一个选项卡时的位置.因此,如果选项卡处于非活动状态,则动画不会每秒运行30次.这可以通过计算setInterval每秒调用函数的次数来确认- 如果选项卡处于非活动状态,则不会是30,而只是1或2.
我想这是通过设计完成的,以提高性能,但有没有办法禁用这种行为?在我的场景中,它实际上是一个缺点.
我正在检查一个变量,例如foo,与多个值的相等性.例如,
if( foo == 1 || foo == 3 || foo == 12 ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
关键是这个繁琐的任务代码相当多.我想出了以下内容:
if( foo in {1: 1, 3: 1, 12: 1} ) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
但这并不完全吸引我,因为我必须为对象中的项目提供冗余值.
有没有人知道对多个值进行相等检查的正确方法?
当尝试使用本地文件中的XMLHttpRequest执行HTTP请求时,它基本上由于Access-Control-Allow-Origin违规而失败.
但是,我自己正在使用本地网页,所以我想知道是否有任何方法可以让Google Chrome允许这些请求,这些请求是从本地文件到Internet上的URL.
例如,$.get('http://www.google.com/')在本地文件中执行时失败,但我自己编写了脚本并且我自己使用它,因此如果我可以抑制它并加载URL,那将非常有用.
那么,我如何允许Google Chrome使用本地文件中的XMLHttpRequest加载网址?
我有许多函数可以返回一些东西或抛出错误.在main函数中,我调用其中的每一个,并希望返回每个函数返回的值,或者如果第一个函数抛出错误,则继续执行第二个函数.
基本上我现在拥有的是:
function testAll() {
try { return func1(); } catch(e) {}
try { return func2(); } catch(e) {} // If func1 throws error, try func2
try { return func3(); } catch(e) {} // If func2 throws error, try func3
}
Run Code Online (Sandbox Code Playgroud)
但实际上我只想try返回它(即如果它没有抛出错误).我不需要catch块.但是,代码try {}失败,因为它缺少(未使用的)catch {}块.
那么,是否有任何方法可以catch在实现相同效果的同时移除这些块?
根据协议,如何使用WebSocket在服务器端发送和接收消息?
当我将数据从浏览器发送到服务器时,为什么我在服务器上看到看似随机的字节?它以某种方式编码数据?
框架如何在服务器→客户端和客户端→服务器方向上工作?
javascript ×6
html ×3
jquery ×2
c# ×1
css ×1
date ×1
decoding ×1
dictionary ×1
encoding ×1
function ×1
literals ×1
local-files ×1
php ×1
protocols ×1
return ×1
setinterval ×1
stylesheet ×1
timestamp ×1
try-catch ×1
websocket ×1