小编JKS*_*JKS的帖子

车轮事件中"线"的高度是多少?(deltaMode = DOM_DELTA_LINE)

wheelFirefox> = 17中的事件有一个deltaMode属性.使用我正在使用的OS /鼠标,它被设置为1(或DOM_DELTA_LINE).此设置意味着deltaXdeltaY事件值以行而不是像素来度量.果然,如果我假装增量是像素,滚动速度比通常在Firefox中慢得多.

相比之下铬31使用deltaMode0(或DOM_DELTA_PIXEL),这允许我来模拟与正常速度滚动.

如果我可以将线值转换为像素值,我将全部设置.但我找不到关于"线"是什么的文件.我试图改变font-sizeline-height在Firefox中,这并没有改变滚动行为.

任何人都知道如何定义"线"?W3C只是说,"这是许多表单控件的情况."

W3C deltaMode

MDN WheelEvent

MDN wheel

编辑:这是一个演示奇怪的小提琴.当Firefox处于DOM_DELTA_LINE模式时,像素和线条之间没有一致的比例 - 它遍布整个地方.当我切换到使用触控板而不是鼠标,导致Firefox切换到DOM_DELTA_PIXEL模式时,也没有一致的比例.另一方面,在Chrome 31中,该比率在DOM_DELTA_PIXEL模式下几乎总是非常接近1:1 .

Chromium问题:实现DOM3轮事件

Bugzilla bug:实现DOM3轮事件

更新:通过在Firefox鼠标滚轮的单蜱滚动,其中deltaModeDOM_DELTA_LINE,像素增量取决于CSS font-size,但不能在line-height.看一下这个小提琴演示.只有在非常缓慢地打勾时才会出现这种情况.对于速度或动量,线对像素比率在任何特定实例或聚合中都是不可预测的.据我所知,使用DOM_DELTA_LINE模式中提供的增量测量无法模拟Firefox的滚动行为.

DOM_DELTA_PIXEL模式中,行为几乎完全像素.也就是说,滚动的实际像素与报告的像素增量值之间的比率几乎正好为1,这在相同的小提琴中得到证明.

向Mozilla提交了一个错误,认为wheel事件在DOM_DELTA_LINE模式下的行为没有用,因为它不可预测(即,它是一个单位和数量都是变量的等式).该问题已被标记为无效,因为预期的行为是wheel …

javascript firefox mousewheel dom-events

40
推荐指数
2
解决办法
5436
查看次数

Safari for OS X Lion的历史动画解决方法?

在Safari for OS X Lion中,当您使用滑动手势在历史记录中向前或向后导航时,该窗口会像在物理页面中移动一样进行动画处理.此行为的问题在于许多应用程序已经侦听历史记录状态中的更改,并且在更改哈希值或使用HTML5时进行适当的响应pushState.

一个完美的例子是GitHub,当导航进出文件夹时 - 例如https://github.com/johndyer/mediaelement.如果单击文件夹,然后滑动到上一页,则显示结束状态"快照",然后从开始状态再次动画,这不仅令人困惑,而且使动画的信息值无效.

今天是我使用Lion的第一天,但​​我很好奇是否有其他网络开发人员遇到过此问题,以及您是否找到了解决方法?

safari history pushstate osx-lion

26
推荐指数
1
解决办法
1620
查看次数

为什么在URI中允许编码斜杠是一种安全风险?

我有一种情况,我想在URI(%2F)中编码斜杠,但我.htaccess发出请求时会忽略我的规则,而是发送给404页面.我很快找到了AllowEncodedSlashes我打算开启的Apache指令,但我仍然不明白为什么它首先是安全风险.如果他们试图邪恶的话,难道没有人能手动将编码的斜杠转换为真正的斜杠吗?(虽然我看不出他们能做什么伤害......)

我正在测试的应用程序是用PHP编写的,与它接口的mod_rewrite规则如下所示:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/(.*)$ /test.php?_escaped_fragment_=$1 [NE,QSA,L]
Run Code Online (Sandbox Code Playgroud)

我只想确保在继续之前了解风险.


澄清一下:Apache不允许在路径中使用编码斜杠,但在查询字符串中允许使用它们.查询字符串与下面的Christian列出的漏洞一样容易受到攻击("远程代码执行,本地文件访问和目录遍历").

那么ASF为什么要创建一个特殊的指令只是为了允许这种行为呢?我不是很难,我真的不明白.我认为不用说任何用户输入(包括URI)都需要在任何数据库或文件系统功能中使用之前进行验证.

php apache mod-rewrite

21
推荐指数
1
解决办法
5202
查看次数

直接访问时播放MP4,但在iOS上通过PHP读取则不播放

我使用PHP脚本在提供视频请求之前验证它们.此脚本可在桌面上使用Safari和Chrome按预期工作.但是在iOS上,我得到了一个破坏的播放按钮.

我确定该视频已正确编码为iPhone/iPad,因为当我直接访问它时,它按预期工作.

相关的PHP代码:

$file_name = 'test-video.mp4';
$file_size = (string)(filesize($file_name));
header('Content-Type: video/mp4');
header('Content-Length: '.$file_size);
readfile_chunked($file_name);
exit;
Run Code Online (Sandbox Code Playgroud)

(readfile_chunked()类似于readfile()非常大的文件,可以在PHP手册页的注释中找到:http://php.net/manual/en/function.readfile.php.无论如何,test-video.mp4只有~5 MB,这是小于内存限制 - 在这种情况下,我实际上可以在正常情况下替换readfile()并产生完全相同的行为.)

test-video.mp4直接访问时获得的标题是:

Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:5558749
Content-Type:video/mp4
Date:Sun, 27 Jun 2010 21:02:09 GMT
Etag:"1c04757-54d1dd-489944c5a6400"
Keep-Alive:timeout=10, max=30
Last-Modified:Tue, 22 Jun 2010 01:25:36 GMT
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
Run Code Online (Sandbox Code Playgroud)

PHP脚本的标头是:

Connection:Keep-Alive
Content-Disposition:inline; filename="test-video.mp4"
Content-Length:5558749
Content-Type:video/mp4
Date:Sun, 27 Jun 2010 21:03:32 GMT
Keep-Alive:timeout=10, max=15
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 …
Run Code Online (Sandbox Code Playgroud)

php html5-video ios

18
推荐指数
2
解决办法
2万
查看次数

我可以在没有重新加载的情况下移动DOM中的Flash对象吗?

我正在尝试在包含Flash对象的包装元素上使用jQuery UI库中的缩放效果.

我遇到的问题是我的包装器的内容会自动移动到另一个包装器(.ui-effects-wrapper)中,当发生这种情况时,Flash对象会重新加载.

当然,这里的具体问题与jQuery UI采用的策略有关 - 但一般来说,是否可以在不重新加载的情况下在DOM中移动Flash对象?

flash dom jquery-ui

10
推荐指数
1
解决办法
2606
查看次数

HTML5 push/replaceState和<base>标记会导致安全性异常

我有一个站点的测试版本位于普通站点的子域,如:http: //test.x.com而不是http://x.com.

我使用<base>标记将所有资源请求转换回原始域:

<base href="http://x.com/" />
Run Code Online (Sandbox Code Playgroud)

在我实现HTML5 push/replaceState支持之前,这种策略很有效.

现在,如果我在控制台中执行此语句:

history.pushState({}, "", "");
Run Code Online (Sandbox Code Playgroud)

...然后我DOMException在基于WebKit的浏览器中获得一个对象:

code: 18
constructor: DOMExceptionConstructor
line: 2
message: "SECURITY_ERR: DOM Exception 18"
name: "SECURITY_ERR"
sourceId: 4839191928
__proto__: DOMExceptionPrototype
Run Code Online (Sandbox Code Playgroud)

...和FireFox 4中的此错误:

Security error" code: "1000
Run Code Online (Sandbox Code Playgroud)

如果我删除<base>标记并执行相同的语句,则会推送新状态,并且没有异常.

一些问题:1)这种行为是安全风险,还是一个bug?并且2)是否有一种解决方法来防止异常,或者除了使用<base>将完全回避问题的标签之外的策略?

谢谢你的考虑.

html5 browser-history

8
推荐指数
1
解决办法
4674
查看次数

两个HTML块之间的差异:结构而不是行/字符?

我正在寻找一个JavaScript diff引擎,它将返回两个HTML块结构的差异.也就是说,而不是"在这一行,在这样的角色,发生了什么事情",它是",这个元素被插入到这个元素之后",或者"这个元素被删除了",或者"这个文本节点是改变了"等

粗略的研究表明这很难.

具体情况是我有Markdown文本编辑器的实时预览.它只适用于文本,但是一旦用户发布了一个YouTube <iframe>嵌入,那么它会在每次击键时呈现/重新加载,这非常昂贵.大图像也很难,因为它们从缓存加载时会产生恶心的抖动效果(至少在WebKit中).

什么是美丽的是替代jQuery.html()它而不是仅仅替换HTML内容实际上比较旧的和新的,并选择性地更新/插入/附加,以便保持不变的元素.

html javascript diff

8
推荐指数
1
解决办法
707
查看次数

像素精确的文本对齐

我正在使用JavaScript来填充左对齐文本的范围,直到它填充其容器,或者直到它达到高度或宽度的可变阈值.这个过程导致了广泛的变化font-size.

我的问题是,对于某些字符,左边有少量填充...虽然通常不明显,但是字体非常大,可以达到10像素或更多.

我掀起了一个页面来展示对各种角色的影响:http: //jsfiddle.net/kBu7S/

文本范围存在于一个设计中,其中沿着页面向下的每个其他元素都按像素对齐到左边缘,因此它在视觉上会因较大的文本大小而分散注意力.

谁能想到一种计算填充量的方法,这样我就能碰到跨度的相对位置?或者甚至可能有CSS解决方案?(letter-spacingword-spacing没有效果.)

我承认即使是一个肮脏的解决方案似乎也不太可能......感谢您的考虑.

javascript css

5
推荐指数
1
解决办法
1179
查看次数

无法在 Safari/Mac (5.0) 上通过 PHP 提供 HTML5 视频

我在 Safari 中遇到一个奇怪的错误,当我通过 PHP 提供 MP4 视频(使用基于令牌的身份验证系统混淆文档根目录下的文件)时,Safari 出于某种原因会触发 onerror 事件,<video>\'s并且视频永远不会加载(我无法从发送到 onerror \xe2\x80\x94 的事件对象中获取任何有用的信息,一切都未定义)。

\n\n

当我直接访问 PHP 脚本时(即视频未嵌入页面中),视频控件会短暂出现,然后闪烁为 QuickTime 问号。

\n\n

当我直接访问 MP4 文件时,它按预期工作。

\n\n

奇怪的是,嵌入的视频在最新版本的 Mac 版 Chrome 中完美运行。

\n\n

以下是通过 PHP 访问时的标头:

\n\n
Connection:Keep-Alive\nContent-Disposition:inline; filename="test.mp4"\nContent-Length:5558749\nContent-Type:video/mp4\nDate:Tue, 22 Jun 2010 01:24:25 GMT\nKeep-Alive:timeout=10, max=29\nServer:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635\nX-Powered-By:PHP/5.2.13\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下是直接访问 test.mp4 时的标头:

\n\n
Accept-Ranges:bytes\nConnection:Keep-Alive\nContent-Length:5558749\nContent-Type:video/mp4\nDate:Tue, 22 Jun 2010 01:26:45 GMT\nEtag:"1c04757-54d1dd-489944c5a6400"\nKeep-Alive:timeout=10, max=30\nLast-Modified:Tue, 22 Jun 2010 01:25:36 GMT\nServer:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635\n
Run Code Online (Sandbox Code Playgroud)\n\n

唯一不同的标头是:Accept-Ranges(我认为没有必要)、Etag、Last-Modified、Content-Disposition 和 X-Powered-By。

\n\n

Chrome 不仅可以很好地处理 …

html php video

3
推荐指数
1
解决办法
4831
查看次数