相关疑难解决方法(0)

在javascript中,如何从另一个浏览器窗口中唯一标识同一个基于cookied的sessionId的浏览器窗口

我的Web应用程序的用户可能打开了多个浏览器窗口并指向同一页面.我希望页面中某些内容的状态(通过ajax加载)在回发中保留.我可以存储在cookie中或存储在我的服务器上.无论哪种方式,我都想不出如何区分每个窗口.

例如,假设用户Bob有两个浏览器窗口打开ListOfSomething页面.每个列表都有一个LoadedPageNumber属性,我需要保留它.否则用户在刷新时总是在第1页结束.Bob可能已加载浏览器窗口1并将其指向第5页,然后加载浏览器窗口2并将其指向第14页.如果我只是根据会话ID存储该属性,则Bob将在窗口1中获取第14页(如果他刷新).

请注意,我的状态变量实际上比这个简单的例子复杂得多,而且我无法坚持它们可能会导致很大的问题(我的应用程序存在缺陷).

我需要某种浏览器窗口ID或其他东西.它当然需要是一个跨浏览器的解决方案(IE6 +,Wekbit?+,FF2 +)

有任何想法吗?

关于相关性的注意事项:请记住,这对于将较旧的基于表单的页面与较新的启用AJAX的项目混合的情况也很有用.有时您需要回发表单,并且您不希望丢失一些客户端状态值.

ajax persistence state

28
推荐指数
1
解决办法
4万
查看次数

CoffeeScript - 手动声明变量

问题:是否可以在CoffeeScript中手动声明变量

我目前正在开始使用CoffeeScript的单元测试,而在完成一个教程时,我来到了必须使用before()after()函数的地步.虽然您可以在JavaScript中声明变量,但您无法在CoffeeScript中执行此操作.一个(但不是最佳实践)解决方案是将它们添加到窗口对象(像这样).我正在使用的代码来自http://sinonjs.org/.

这是我正在测试的代码:

describe 'Fake server', ->
  before(() -> server = sinon.fakeServer.create())
  after(() -> server.restore())

  it "calls callback with deserialized data", () ->
    callback = sinon.spy()
    getTodos(42, callback)

  # This is part of the FakeXMLHttpRequest API
  server.requests[0].respond(
    200,
    { "Content-Type": "application/json" },
    JSON.stringify([{ id: 1, text: "Provide examples", done: true }])
  )

  assert(callback.calledOnce)
Run Code Online (Sandbox Code Playgroud)

编译为JavaScript,之前和之后的函数如下所示:

before(function() {
  var server;
  return server = sinon.fakeServer.create();
});
after(function() {
  return server.restore();
});
Run Code Online (Sandbox Code Playgroud)

如您所见,变量服务器在before函数中声明,因此不能在错误的范围之外使用.

javascript unit-testing scope coffeescript

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