我正在动态加载(大)图像以绘制到html5画布,如下所示:
var t = new Image();
t.onload = ...
t.src = 'http://myurl';
Run Code Online (Sandbox Code Playgroud)
但每隔一段时间就想完全取消图像请求.
只有这样,我来到了被设置src
到''
.即
t.src = ''
Run Code Online (Sandbox Code Playgroud)
这适用于许多浏览器,但似乎只有Firefox实际上取消了对图像的http请求.
我通过禁用缓存并启用"模拟调制解调器速度"来测试Fiddler2.然后运行小提琴来测试取消图像请求.(我很想听听关于如何测试这个的其他想法)
我知道有办法取消所有请求(如在这个问题中),但我只想取消一个.
有关其他方式(特别是在移动浏览器上)的任何想法吗?
随着GAE 1.5.0的新版本,我们现在可以轻松地进行异步数据存储调用.我们是否需要get_result()
在调用' put_async ' 后调用?
例如,如果我有一个名为的模型MyLogData
,我可以调用:
put_async(MyLogData(text="My Text"))
Run Code Online (Sandbox Code Playgroud)
在我的处理程序返回之前没有调用匹配get_result()
?在将结果发送到客户端之前,GAE是否会自动阻止任何待处理的呼叫?
请注意,我并不真正关心错误条件.即我不介意其中一些失败.
python google-app-engine asynchronous google-cloud-datastore
最近我看到一些C#项目使用双重检查锁定模式Dictionary
.像这样的东西:
private static readonly object _lock = new object();
private static volatile IDictionary<string, object> _cache =
new Dictionary<string, object>();
public static object Create(string key)
{
object val;
if (!_cache.TryGetValue(key, out val))
{
lock (_lock)
{
if (!_cache.TryGetValue(key, out val))
{
val = new object(); // factory construction based on key here.
_cache.Add(key, val);
}
}
}
return val;
}
Run Code Online (Sandbox Code Playgroud)
这段代码是不正确的,因为当(在锁外)迭代Dictionary
集合时,可以"增长" 集合.在许多情况下这可能是极不可能的,但仍然是错误的._cache.Add()
_cache.TryGetValue
是否有一个简单的程序来证明此代码失败了?
将其纳入单元测试是否有意义?如果是这样,怎么样?
我试图动态地添加使用javascript CSS样式表规则,类似例子2 这里.
它大部分时间都有效,但似乎有一种竞争条件,有时会导致(至少)Chrome(15.0.874和17.0.933)失败.当缓存为空(或已被清除)时,它很少发生.
这就是我能够将其缩小到的范围.首先,我通过附加一个外部样式表来加载它<head>
,然后我创建一个新的样式表(我将添加规则).然后我打印document.styleSheets
(立即和1秒后)的长度.
$(function() {
// it doesn't happen if this line is missing.
$("head").append('<link rel="stylesheet" type="text/css"'+
'href="/css/normalize.css" />');
var stylesheet = document.createElement("style");
stylesheet.setAttribute("type", "text/css");
document.getElementsByTagName('head')[0].appendChild(stylesheet);
var b = $('body');
b.append(document.styleSheets.length).append('<br/>');
setTimeout(function() {
b.append(document.styleSheets.length).append('<br/>');
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
(在http://jsfiddle.net/amirshim/gAYzY/13/上播放)
当缓存是明确的,有时打印2
,然后4
(的jsfiddle增加了它自己的2个css文件),这意味着它不会添加样式表或者document.styleSheets
立即...但也许等待外部文件加载.
这是预期的吗?
如果是这样,MDN上的示例2(以及其他许多其他内容)是否已损坏?从第27行开始:
var s = document.styleSheets[document.styleSheets.length - 1];
Run Code Online (Sandbox Code Playgroud)
可能会评估 document.styleSheets.length == 0
请注意,当我不首先加载外部CSS文件时,不会发生这种情况.
虽然Flash有一个鼠标滚轮事件(MouseEvent.MOUSE_WHEEL),但它有很多问题.
首先,Mac上尚不支持该事件.所以有一堆解决方案,所有这些(基本上)都在javascript中捕获mousewheel(或DOMMouseScroll)事件并将其传递给flash应用程序.幸运的是,在我测试过的所有Mac浏览器中,当闪光灯处于全屏模式时,这也适用.
问题2是flash忽略具有小"增量"的鼠标滚轮事件.例如,Microsoft的IntelliPoint Mice带有"Smooth Scroll"会导致此问题.解决方案与mac的解决方案相同...即在浏览器中捕获javascript鼠标滚轮事件并将其传递给应用程序.问题是我测试的Windows浏览器(firefox,即safari和chrome),当闪存处于全屏模式时,它们似乎无法捕获此事件.有谁知道为什么或如何解决这个问题?
我目前有一个混合解决方案,总是从javascript(非全屏或全屏模式)中获取事件,除非它在Windows上处于全屏模式(此时它从闪光鼠标轮事件中获取它们).所以它失败的唯一时间是Windows上的全屏模式,鼠标具有小的增量.有人有完整的解决方案?还是只是一个更好的?
以下代码是否有效?
function test() {
return /\//.exec("\/");
}
alert(test());
Run Code Online (Sandbox Code Playgroud)
似乎许多javascript minifiers(包括http://jscompress.com/上的 jsmin )认为第二行的"//"是评论的开头.我认为这是"简单"实现的缩小器中的一个错误,因为我试过的所有浏览器实现都运行它没有问题.在jsfiddle上尝试一下.
这是非常糟糕的微优化,但我只是好奇.它通常不会对"真实"世界产生影响.
所以我正在编译一个函数(什么都不做),compile()
然后调用exec
该代码并获取对我编译的函数的引用.然后我执行了几百万次计时.然后用本地函数重复它.为什么动态编译的函数只需要调用约15%(在python 2.7.2上)?
import datetime
def getCompiledFunc():
cc = compile("def aa():pass", '<string>', 'exec')
dd = {}
exec cc in dd
return dd.get('aa')
compiledFunc = getCompiledFunc()
def localFunc():pass
def testCall(f):
st = datetime.datetime.now()
for x in xrange(10000000): f()
et = datetime.datetime.now()
return (et-st).total_seconds()
for x in xrange(10):
lt = testCall(localFunc)
ct = testCall(compiledFunc)
print "%s %s %s%% slower" % (lt, ct, int(100.0*(ct-lt)/lt))
Run Code Online (Sandbox Code Playgroud)
我得到的输出是这样的:
1.139 1.319 15% slower
Run Code Online (Sandbox Code Playgroud) 我想知道是否有更清晰(更简洁)的方法来执行每个()在遵循JavaScript代码时所做的事情.
$(".moreinfodialog")
.before('<a href="#">Click for more info.</a>')
.each(function() {
var temp = this;
$(this).prev("a").click(function() {
$(temp).dialog("open");
return false;
});
})
.dialog({ autoOpen: false, modal: true });
Run Code Online (Sandbox Code Playgroud)
请注意,最后一次调用会重新排序dom元素,因此".moreinfodialog"类不再位于hrefs旁边.
顺便说一句:这个源使用jquery/jquery-ui对话框用".moreinfodialog"类隐藏div中的任何文本,并将其替换为"Click for more info".文本.单击该文本时,将显示包含原始div内文本的对话框.
我在iis7上运行的asp.net mvc代码中随机获得了两个异常:
Exception type: InvalidOperationException
Exception message: Collection was modified; enumeration operation may not execute.
at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.List'1.Enumerator.MoveNextRare()
at System.Collections.Generic.List'1.Enumerator.MoveNext()
at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context)
at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)
和
Exception type: NullReferenceException
Exception message: Object reference not set to an instance of an object.
at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext)
at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context)
at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)
它不是一贯可重复的,但我认为它是改变(或腐败)的东西RouteTable.Routes
.我RouteTable.Routes
在项目中访问的唯一地方是Global.asax.cs …
我正在iframe中加载图像,然后(一旦加载了iframe)在页面上加载图像.但大多数浏览器似乎都在加载图像两次.为什么img
标签不是从缓存中加载的?
像这样的东西:
var loader = $('<iframe />').appendTo('body')[0];
loader.onload = function() {
$('body').append('<img src="' + imgsrc + '" />');
};
loader.src = imgsrc;
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/amirshim/na3UA/
我正在使用fiddler2来查看网络流量.
如果您想知道我为什么要这样做,请查看此问题
我有两个(缓慢加载)数据源.我可以在加载后立即开始处理数据源2,但是需要来自1和2的数据来处理来自源1的数据.所以我有一些代码如下:
$.get 'url2', (data2) ->
$.get 'url1', (data1) ->
# do stuff with data1 and data2
# do stuff with data2
Run Code Online (Sandbox Code Playgroud)
但是,我想并行加载它们,而不是顺序加载它们(即我不想在开始加载数据源1之前等待数据源2加载).
有没有很好的设计模式呢?
当用户Facebook连接到我的网站时,我想将用户的Facebook好友列表范围缩小到那些已经注册我网站的用户.
所以我有两个清单
最有效的方法是对所有已注册的FB用户的UID执行单个查询并在代码中执行交集吗?
如果有更多像10,000名FB用户注册的话,那么最有效的方法是在30秒内无法通过查询检索到这些用户?
javascript ×7
jquery ×5
asynchronous ×2
c# ×2
image ×2
python ×2
.net ×1
asp.net-mvc ×1
caching ×1
canvas ×1
closures ×1
coffeescript ×1
comments ×1
css ×1
dynamic ×1
facebook ×1
flash ×1
fullscreen ×1
iframe ×1
iis-6 ×1
iis-7 ×1
jquery-ui ×1
minify ×1
mousewheel ×1
optimization ×1
parsing ×1
python-2.7 ×1
regex ×1
stylesheet ×1