W3:
6.2跨源资源和CORS
应用程序倾向于缓存来自CDN或其他来源的项目.可以直接使用<script>, <img>, <video>和<link>元素请求其中许多.如果这种运行时协作在离线时破坏,那将是极大的限制.类似地,当设置适当的CORS头时,XHR可能有许多种类的非原始资源.ServiceWorkers通过允许Caches获取和缓存非原始项来实现此功能.但是,有一些限制.首先,与在Cache中作为Response属性设置为"basic"的Response对象管理的同源资源不同,存储的对象是类型属性设置为"opaque"的Response对象.类型为"opaque"的响应提供的API比响应类型为"basic"的表达要少得多; 无法读取或设置主体和标题,也不检查其内容的许多其他方面.它们可以以与响应类型为"基本"相同的方式传递给event.respondWith(r)方法,但不能以编程方式有意义地创建.这些限制对于保留平台的安全不变量是必要的.允许缓存存储它们允许应用程序在大多数情况下避免重新构建.
我已将CORS标题设置为:
Access-Control-Allow-Origin:https://xxx.xx.x.com
Access-Control-Allow-Credentials:true
Run Code Online (Sandbox Code Playgroud)
但我仍然得到一个"不透明"的响应,我无法确保代码是200.如果我缓存这些不成功的响应,它将导致一些问题.
例如,一个网络密码导致404到跨域资源,并且我将其缓存,然后在网络问题得到纠正时,我将始终使用此404缓存响应.同源资源没有这个问题.
有人可以向我解释为什么d立即解决下面代码中的结果promise()?
//promises that are never resolved nor rejected
var a = new Promise(function(r,re){});
var b = new Promise(function(r,re){});
var c = new Promise(function(r,re){});
var d = [a, b, c].reduce(function (previousPromise, promise) {
return previousPromise.then(promise);
}, Promise.resolve());
Run Code Online (Sandbox Code Playgroud)
我创建永远未决承诺的阵列,因此所得到的承诺应等待所有后续承诺到结束也永远挂起(这里所提出).我已经使用了一段时间的承诺,但我在这里显然遗漏了一些东西.
当用户关闭chrome中的选项卡或窗口时,我在页面上使用了两个监听器,但它们似乎不起作用
chrome.tabs.onRemoved.addListener(function (integer tabId, object removeInfo) {alert("Haooooo")});
chrome.windows.onRemoved.addListener(function (integer windowId) {alert("Haooooo")});
Run Code Online (Sandbox Code Playgroud)
但是,以下函数检测窗口关闭或制表符关闭,但也会在刷新时触发.有没有人能够检测到仅适用于Chrome的浏览器/标签关闭.我不是在寻找这个在任何其他浏览器中工作.只在chrome中寻找解决方案
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "See you later" ;
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
}
);
Run Code Online (Sandbox Code Playgroud) 有没有办法默认为每个项目激活Visual Studio 2012的代码分析功能?并且,如果可能,默认情况下将规则设置为"Microsoft All Rules".
每次创建新项目时,我都必须在项目属性中手动激活"在构建时启用代码分析",并且必须将规则设置为所有规则.有时我会忘记这样做,并且必须解决更多问题.如果它默认激活我可以防止.
我有一段使用node-sync的代码,如下所示:
function funcA() {
return new Promise(function(resolve, reject) {
Sync(function () {
return funcB.sync();
}, function (err, result) {
if(err) {
reject(err);
} else {
resolve(result);
}
});
}
Run Code Online (Sandbox Code Playgroud)
此代码使用mocha + chai进行测试:
it("should return array", function() {
return funcA().then(function(result) {
expect(result).to.be.an.instanceof(Array);
});
});
Run Code Online (Sandbox Code Playgroud)
几个月前它工作得很好,但现在这个测试总是超时:
错误:超过2000毫秒的超时.确保在此测试中调用done()回调.
到目前为止我尝试过的:
done()而不是返回一个承诺node-sync为synchronize.js我发现的是,expect(...这个测试的一部分实际上是被调用的,但只有在摩卡杀死测试之后.无论当前设置的expect(..是什么超时间隔,都会在收到Error: timeout消息后约20毫秒被调用.
我通过setInterval(function(){}, 10)在测试文件的顶部添加来解决问题.我想知道为什么这有效,如果有更好的方法来解决这个问题?
[编辑]看起来这是一个特定于节点版本的问题.测试在0.12.4上失败,但在0.10.38上正确运行.
[编辑]实际代码可在此处获得.
我正在尝试从方框B(Windows)访问在方框A(Debian)上运行的远程调试端口.在方框A上我运行带有--remote-debugging-port=9222标记的Chrome,我可以看到它正常工作(我可以localhost:9222从A上的其他浏览器访问).另外,我确定盒子A和B是连接的,因为我可以:80从盒子B上访问盒子A上运行的(apache)就好了.我现在需要做的是允许:9222在方框A上访问方框B.我已经完成了对端口转发和iptables规则的研究,但我没能使它工作.
编辑
机器B是Windows所以我不知道如何在那里使用ssh,我发现一个端口转发的应用程序似乎工作正常.它给了我一个错误:"收到连接但无法连接到主机-B:9222".所以看起来9222不适合外部连接.来自A上的netstat的输出给了我:
root@template:/home/developer# netstat -nap | grep 9222
tcp 0 0 127.0.0.1:9222 0.0.0.0:* LISTEN 24300/user
Run Code Online (Sandbox Code Playgroud) google-chrome remote-debugging iptables portforwarding google-chrome-devtools
据我所知,History.js是HTML5历史/状态API的填充.因此,在现代浏览器中,它应该只使用popstate来监听URL更改.那么,为什么在最新的Chrome上我可以看到定时器每250ms发射一次?它看起来很浪费,并且每隔几秒触发一次垃圾收集器.
看看这个官方的History.js演示.

这是不可能的,因为地图将劫持所有手势(即使它被最大限度地缩小).重新加载页面无济于事,因为重新加载之间会保留缩放设置.
我正在使用默认设置:
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v10'
});
Run Code Online (Sandbox Code Playgroud)
并且我想更改它们,以便在最大限度地缩小地图时,mapbox会停止劫持和preventDefault缩小手势.
运行jspm bundle-sfx some/input some/output.js不会将我的代码从ES6转换为ES5.这使输出文件不可用.
输入文件的示例内容:
[1,2,3,4].map((i)=>i*i);
Run Code Online (Sandbox Code Playgroud) javascript ×4
ecmascript-6 ×2
.net ×1
babeljs ×1
caching ×1
cross-domain ×1
default ×1
es6-promise ×1
history.js ×1
iptables ×1
jspm ×1
macos ×1
mapbox ×1
mapbox-gl-js ×1
mocha.js ×1
node.js ×1
osx-yosemite ×1
performance ×1
pinchzoom ×1
promise ×1
setinterval ×1
traceur ×1
zoom ×1