小编jvi*_*ena的帖子

javascript检测浏览器/设备是否支持屏幕旋转

有没有办法检测浏览器/设备是否支持屏幕旋转,而不必等待orientationchange事件?我不是试图检测旋转本身,只有浏览器或设备支持它。

javascript screen-rotation

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

window.stop() 停止当前加载图像,但加载新图像

我有一个脚本,它基于某些事件(用户交互、setTimeout)加载 JSON,然后根据 JSON 的结果加载一堆图像。我还根据用户与页面的交互预先加载了一些图像。有时,在页面打开一段时间后,从 JSON 加载的图像开始“变慢”,加载时间更长(如果我刷新页面,它们加载正常)。所以我开始寻找一种方法来中止当前加载的图像,并遇到了“window.stop()”。我在规范中阅读了 MDN amd 中的描述,无法理解这是否是我正在寻找的内容。

MDN 有

stop() 方法完全等同于单击浏览器中的停止按钮。由于脚本加载的顺序,stop() 方法不能停止加载包含它的文档,但它会停止加载大图像、新窗口和其他延迟加载的对象。

规格

Window 对象上的 stop() 方法应该,如果存在导航浏览上下文的尝试并且该尝试当前未运行卸载文档算法,则取消该导航;然后,它必须中止调用它的 Window 对象的浏览上下文的活动文档。

中止文档

...取消本文档上下文中提取算法的任何实例,丢弃排队等待它们的任何任务,并丢弃从网络接收的任何进一步数据...

这是否意味着在使用 window.stop() 后我无法加载更多图像?我做了一些测试,在 Firefox、Chrome 和 Safari 上,这似乎有效(在 window.stop 之后加载图像),但这似乎与规范相矛盾。

window.stop();
document.getElementById("c").innerHTML = "<img src='http://a5.mzstatic.com/us/r30/Purple5/v4/5a/2e/e9/5a2ee9b3-8f0e-4f8b-4043-dd3e3ea29766/icon128-2x.png'/>";
Run Code Online (Sandbox Code Playgroud)
<div id="c"></div>
Run Code Online (Sandbox Code Playgroud)

我是否误读了规范并且使用这种代码是安全的,还是应该尝试以不同的方式来做?

javascript

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

来自sub的perl返回值混淆了

我试图从perl中的sub获得2个不同的哈希值.哈希在子的输出中混淆.这是我的简化代码:

#!/usr/bin/perl

use strict;
use warnings;

sub sub1 {
    my (%h1, %h2);
    $h1{'1a'}++;
    $h1{'1b'}++;
    $h2{'2a'}++;
    $h2{'2b'}++;
    while ( (my $key, my $value) = each %h1 ){
        print "key: $key, value: $value\n";
    }
    print "\n";
    return (%h1, %h2);
}

my (%r1, %r2) = sub1();
while ( (my $key, my $value) = each %r1 ){
    print "key: $key, value: $value\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

key: 1b, value: 1
key: 1a, value: 1

key: 1b, value: 1
key: 2a, value: 1
key: 2b, value: 1 …
Run Code Online (Sandbox Code Playgroud)

perl hashtable

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

perl - 在while内填充regex组中的几个变量

我正在学习perl,现在我正试图在匹配捕获的同时填充几个变量.我有"长"版本,如下:

$pc = ...
while ($pc =~ m/bla1(.*?)bla2(.*?)bla3(.*?)bla4(.*?)bla5(.*?)bla6(.*?)bla7/g) {
    $var1 = $1; 
    $var2 = $2;
    $var3 = $3;
    $var4 = $4;
    $var5 = $5;
    $var6 = $6;
    ...
}
Run Code Online (Sandbox Code Playgroud)

对于单次捕获(在while循环之外)我知道我可以这样做:

my $string = 'abcde';
my @captures = $string =~ m/.(.)(.)(.)./;
my ($aa,$ab,$ac) = @captures;
print ("$aa - $ab - $ac\n");
Run Code Online (Sandbox Code Playgroud)

有没有办法立即填充while循环中的所有变量?我是否需要执行类似下面的代码,或者是否更容易(不需要2个正则表达式)方式?

while ($pc =~ m/bla1(.*?)bla7/g) {
    my @captures = $1 =~ m/(.*?)bla2(.*?)bla3(.*?)bla4(.*?)bla5(.*?)bla6(.*?)/;
    ($var1,$var2,$var3,$var4,$var5,$var6) = @captures;
    ...
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

regex perl

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

了解缩小的JavaScript代码

我在一个让我困惑的缩小图书馆中遇到了这段JS代码:

...
return e.input || L(), e.addTest = function(a, b) {
...
Run Code Online (Sandbox Code Playgroud)

我在一个jsFiddle上玩它,没有太多运气了解发生了什么.

我想知道:

  1. 什么时候回来?总是很明显.
  2. 什么回来了?在我的测试中它返回undefined ...为什么?
  3. 代码L()何时执行?只有当e.input返回false时?
  4. 什么时候设置e.addTest?根据我的测试总是......为什么?

javascript minify

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

标签 统计

javascript ×3

perl ×2

hashtable ×1

minify ×1

regex ×1

screen-rotation ×1