我正在寻找一种跨浏览器的方式来检测父帧是否与我的帧相同,最好不要在JavaScript错误控制台上打印警告.
以下似乎有效,但我想避免在控制台上打印错误(至少Safari和Chrome在访问父框架上的location.href时会这样做.Firefox抛出一个可以捕获的异常):
function parentIsSameOrigin() {
var result = true;
try {
result = window.parent.location.href !== undefined;
} catch (e) {
result = false;
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用d3.js的d3.behavior.drag() drag事件来更新我的数据模型(不立即设置元素位置),然后运行我的"绘图"功能,根据更新的模型更新所有元素.另外,我正在使用transform包含组元素的翻译来移动与拖动对象相关联的所有元素(我从下面链接的示例中删除了额外的元素).这会导致拖动的元素在拖动时停滞不前,拖动它的速度越快,效果越差.
请参阅jsFiddle上的这个精简示例.
这是示例的代码:
blocks = [
{ x: 0, y: 0 }
];
drag = d3.behavior.drag()
.origin(Object)
.on("drag", function(d) {
d.x = d3.event.x;
d.y = d3.event.y;
draw();
});
svg = d3.select("body")
.append("svg:svg")
.attr("width", 600)
.attr("height", 600);
function draw() {
g = svg.selectAll("g")
.data(blocks);
gEnter = g.enter().append("g");
g.attr("transform", function(d) { return "translate("+d.x+","+d.y+")"; });
gEnter.append("rect")
.attr("height", 100)
.attr("width", 100)
.call(drag);
}
draw()?;
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种快速且节省内存的方法来实现Conway的生命游戏.
限制因素:96x128板,大约2kB RAM和52MHz处理器(请参阅技术规范:http://www.getinpulse.com/features).
我目前的天真解决方案将每个单元表示为矩阵中的单个位(96*128/8 = 1,536字节),但速度太慢.可以使用哪些技巧来提高性能?
存储活细胞的坐标(例如在此实现中http://dotat.at/prog/life/life.html)会占用太多内存.
我的应用程序希望它有时会尝试解析无效的XML文档.我目前抓住了"SAXParseException:prolog中不允许内容." 例外,工作正常.但是,Xerces仍然觉得需要将自己的消息打印到控制台:
[Fatal Error] :1:1: Content is not allowed in prolog.
Run Code Online (Sandbox Code Playgroud)
有没有办法禁用它?
我想在我自己的嵌入式WebViews中禁用XMLHttpRequests上的相同原始策略.我可以控制在WebView中加载的页面/正在执行的代码,所以我不关心强制实施相同的原始策略.我想提出跨域请求.
我已经尝试实现WebPolicyDelegate和WebResourceLoadDelegate,但似乎没有为XMLHttpRequests调用它们.
想到这些方法,每种方法的优缺点是什么?
方法1:扩充本机实例
var _XMLHttpRequest = XMLHttpRequest;
XMLHttpRequest = function() {
var xhr = new _XMLHttpRequest();
// augment/wrap/modify here
var _open = xhr.open;
xhr.open = function() {
// custom stuff
return _open.apply(this, arguments);
}
return xhr;
}
Run Code Online (Sandbox Code Playgroud)
方法2:子"类"本机XMLHttpRequest
var _XMLHttpRequest = XMLHttpRequest;
XMLHttpRequest = function() {
// definePropertys here etc
}
XMLHttpRequest.prototype = new _XMLHttpRequest());
// OR
XMLHttpRequest.prototype = Object.create(_XMLHttpRequest);
// custom wrapped methods on prototype here
XMLHttpRequest.prototype.open = function() {
// custom stuff
return _XMLHttpRequest.prototype.open.apply(this, arguments);
}
Run Code Online (Sandbox Code Playgroud)
方法3:完全代理本机XMLHttpRequest
var _XMLHttpRequest …Run Code Online (Sandbox Code Playgroud) 我想检测脚本标记(动态创建并添加到DOM)是否无法加载.onerror事件有效,但Firefox中的file:// URL除外.
不幸的是没有任何的技术在这里描述的(除了超时,这是我不能接受的情况下),似乎在Firefox中工作,如果脚本标签的src是一个文件:// URL(或相对URL和页面被通过文件加载: //网址)
测试用例:
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'doesnotexist.js');
script.onerror = function() { alert("Loading failed!"); }
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)
将其加载到带有file:// URL的HTML页面中.onerror事件不会在Firefox中执行.从网络服务器或Safari或Chrome加载,它会.
这对我来说似乎是个错误.有没有任何已知的方法呢?
我想使用HTTP代理(例如nginx)来缓存大量/昂贵的请求.这些资源对于任何授权用户都是相同的,但是每个请求的后端都需要检查其身份验证/授权.
这听起来像是Cache-Control: public, max-age=0与nginx指令proxy_cache_revalidate on;一起执行此操作的方式.代理可以缓存请求,但是每个后续请求都需要对后端执行条件GET,以确保在返回缓存资源之前对其进行授权.如果用户未经授权,则后端发送403,如果用户被授权则发送304,并且缓存的资源不是陈旧的,或者如果新资源已过期,则发送200.
在nginx max-age=0中设置了if ,根本不缓存请求.如果max-age=1设置,那么如果我在初始请求之后等待1秒,那么nginx会执行条件GET请求,但是在1秒之前它直接从缓存服务它,这对于需要进行身份验证的资源来说显然非常糟糕.
有没有办法让nginx缓存请求但是立即需要重新验证?
请注意,这在Apache 中可以正常工作.以下是nginx和Apache的示例,前两个有max-age = 5,最后两个有max-age = 0:
# Apache with `Cache-Control: public, max-age=5`
$ while true; do curl -v http://localhost:4001/ >/dev/null 2>&1 | grep X-Cache; sleep 1; done
< X-Cache: MISS from 172.x.x.x
< X-Cache: HIT from 172.x.x.x
< X-Cache: HIT from 172.x.x.x
< X-Cache: HIT from 172.x.x.x
< X-Cache: HIT from 172.x.x.x
< X-Cache: REVALIDATE from 172.x.x.x
< X-Cache: HIT from …Run Code Online (Sandbox Code Playgroud) javascript ×5
browser ×1
d3.js ×1
embedded ×1
firefox ×1
http-caching ×1
http-headers ×1
java ×1
low-memory ×1
nginx ×1
onerror ×1
webkit ×1
webview ×1
xerces ×1
xml ×1