小编pim*_*vdb的帖子

335
推荐指数
14
解决办法
84万
查看次数

悬停子元素时触发HTML5 dragleave

我遇到的问题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.

html javascript jquery drag-and-drop jquery-events

272
推荐指数
20
解决办法
7万
查看次数

<script defer ="defer">究竟是如何工作的?

我有一些<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

html javascript deferred-execution

201
推荐指数
8
解决办法
11万
查看次数

<link>标记中是否需要type ="text/css"?

我想知道是否有必要使用<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">元素,是有必要包括它?

html css stylesheet

185
推荐指数
4
解决办法
5万
查看次数

C#中字典的文字符号?

我目前在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#中的关联数组是否有某种文字符号?

c# dictionary literals

171
推荐指数
4
解决办法
5万
查看次数

如果Chrome中的标签处于非活动状态,如何才能使setInterval正常工作?

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.

我想这是通过设计完成的,以提高性能,但有没有办法禁用这种行为?在我的场景中,它实际上是一个缺点.

javascript google-chrome setinterval

171
推荐指数
8
解决办法
11万
查看次数

根据值列表检查变量相等性

我正在检查一个变量,例如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)

但这并不完全吸引我,因为我必须为对象中的项目提供冗余值.

有没有人知道对多个值进行相等检查的正确方法?

javascript

122
推荐指数
8
解决办法
11万
查看次数

允许Google Chrome使用XMLHttpRequest从本地文件加载URL

当尝试使用本地文件中的XMLHttpRequest执行HTTP请求时,它基本上由于Access-Control-Allow-Origin违规而失败.

但是,我自己正在使用本地网页,所以我想知道是否有任何方法可以让Google Chrome允许这些请求,这些请求是从本地文件到Internet上的URL.

例如,$.get('http://www.google.com/')在本地文件中执行时失败,但我自己编写了脚本并且我自己使用它,因此如果我可以抑制它并加载URL,那将非常有用.

那么,我如何允许Google Chrome使用本地文件中的XMLHttpRequest加载网址?

javascript jquery google-chrome xmlhttprequest local-files

120
推荐指数
4
解决办法
16万
查看次数

在JavaScript中尝试{}没有catch {}?

我有许多函数可以返回一些东西或抛出错误.在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 {}块.

在jsFiddle上举了一个例子.

那么,是否有任何方法可以catch在实现相同效果的同时移除这些块?

javascript return function try-catch

101
推荐指数
6
解决办法
6万
查看次数

如何在服务器端发送和接收WebSocket消息?

  • 根据协议,如何使用WebSocket在服务器端发送和接收消息?

  • 当我将数据从浏览器发送到服务器时,为什么我在服务器上看到看似随机的字节?它以某种方式编码数据?

  • 框架如何在服务器→客户端和客户端→服务器方向上工作?

encoding protocols decoding websocket

82
推荐指数
6
解决办法
10万
查看次数