小编tlr*_*son的帖子

用于检测父框架是否具有相同原点的JavaScript?

我正在寻找一种跨浏览器的方式来检测父帧是否与我的帧相同,最好不要在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)

javascript browser same-origin-policy

25
推荐指数
2
解决办法
8324
查看次数

使用d3.behavior.drag()和transform时,"Stuttering"拖动

我正在尝试使用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)

javascript d3.js

19
推荐指数
2
解决办法
8515
查看次数

对于低内存使用,Conway的生命游戏的有效实施是什么?

我正在寻找一种快速且节省内存的方法来实现Conway的生命游戏.

限制因素:96x128板,大约2kB RAM和52MHz处理器(请参阅技术规范:http://www.getinpulse.com/features).

我目前的天真解决方案将每个单元表示为矩阵中的单个位(96*128/8 = 1,536字节),但速度太慢.可以使用哪些技巧来提高性能?

存储活细胞的坐标(例如在此实现中http://dotat.at/prog/life/life.html)会占用太多内存.

embedded low-memory conways-game-of-life

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

禁用Java Xerces中的日志记录("[致命错误]:1:1:prolog中不允许使用内容.")

我的应用程序希望它有时会尝试解析无效的XML文档.我目前抓住了"SAXParseException:prolog中不允许内容." 例外,工作正常.但是,Xerces仍然觉得需要将自己的消息打印到控制台:

[Fatal Error] :1:1: Content is not allowed in prolog.
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用它?

java xml xerces

8
推荐指数
2
解决办法
4380
查看次数

在WebKit WebViews中禁用同源策略/制作跨域XMLHttpRequests?

我想在我自己的嵌入式WebViews中禁用XMLHttpRequests上的相同原始策略.我可以控制在WebView中加载的页面/正在执行的代码,所以我不关心强制实施相同的原始策略.我想提出跨域请求.

我已经尝试实现WebPolicyDelegate和WebResourceLoadDelegate,但似乎没有为XMLHttpRequests调用它们.

javascript webkit xmlhttprequest webview same-origin-policy

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

如何创建XMLHttpRequest包装器/代理?

想到这些方法,每种方法的优缺点是什么?

方法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)

javascript xmlhttprequest

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

如何检测文件的脚本加载://在Firefox中URL失败?

我想检测脚本标记(动态创建并添加到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加载,它会.

这对我来说似乎是个错误.有没有任何已知的方法呢?

javascript firefox onerror

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

nginx缓存但使用`Cache-Control:public,s-maxage = 0`立即过期/重新验证

我想使用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)

reverse-proxy nginx cache-control http-caching http-headers

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