小编Nor*_*icz的帖子

IE DOMContentLoaded documentElement.doScroll

是否有任何理由为什么只有在流行的JS库中窗口不在iframe中时才实现Diego Perini的IE的DOMContentLoaded技巧

jQuery的:

//If IE and not a frame continually check to see if the document is ready

  var toplevel = false;

  try {
    toplevel = window.frameElement == null;
  } catch(e) {}

  if ( document.documentElement.doScroll && toplevel ) {
    doScrollCheck();
  }
Run Code Online (Sandbox Code Playgroud)

原型:

document.observe('readystatechange', checkReadyState);
if (window == top)
  timer = pollDoScroll.defer();
Run Code Online (Sandbox Code Playgroud)

它们都检查窗口是否等于顶部,如果它document.documentElement.doScroll('left');是用于检查就绪状态.但为什么不在何时使用呢window != top

javascript javascript-events

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

Akka HTTP Websocket,如何识别actor内部的连接

我正在研究scala中的简单多人游戏,我想通过websockets为JS客户端公开.

这是我的WebsocketServer类

class WebsocketServer(actorRef: ActorRef, protocol: Protocol, system: ActorSystem, materializer: ActorMaterializer) extends Directives {

    val route = get {
      pathEndOrSingleSlash {
        handleWebSocketMessages(websocketFlow)
      }
    }

    def websocketFlow: Flow[Message, Message, Any] =
      Flow[Message]
        .map {
          case TextMessage.Strict(textMessage) => protocol.hydrate(textMessage)
        }
        .via(actorFlow)
        .map(event => TextMessage.Strict(protocol.serialize(event)))


    def actorFlow : Flow[Protocol.Message, Protocol.Event, Any] = {
      val sink =
        Flow[Protocol.Message]
          .to(Sink.actorRef[Protocol.Message](actorRef, Protocol.CloseConnection()))

      val source =
        Source.actorRef[Protocol.Event](1, OverflowStrategy.fail)
          .mapMaterializedValue(actor => actorRef ! Protocol.OpenConnection(actor))

      Flow.fromSinkAndSource(sink, source)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的actor的简化代码,它应该从websocket服务器接收消息.

class GameActor() extends Actor {

  private var connections: List[ActorRef] …
Run Code Online (Sandbox Code Playgroud)

scala akka-stream akka-http

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

Akka websocket - 如何通过服务器关闭连接?

所以这是我的websocket服务器实现.

val route = get {
  pathEndOrSingleSlash {
    handleWebSocketMessages(websocketFlow)
  }
}

def websocketFlow: Flow[Message, Message, Any] =
  Flow[Message]
    .collect { case TextMessage.Strict(textMessage) => protocol.hydrate(textMessage) }
    .via(chatActorFlow(UUID.randomUUID()))
    .map(event => TextMessage.Strict(protocol.serialize(event)))


def chatActorFlow(connectionId: UUID) : Flow[Protocol.Message, Protocol.Event, Any] = {

  val sink = Flow[Protocol.Message]
    .map(msg => Protocol.SignedMessage(connectionId, msg))
    .to(Sink.actorRef(chatRef, Protocol.CloseConnection(connectionId)))

  val source = Source
      .mapMaterializedValue {
        actor : ActorRef => {
          chatRef ! Protocol.OpenConnection(actor, connectionId)
        }
      }

  Flow.fromSinkAndSource(sink, source)
}
Run Code Online (Sandbox Code Playgroud)

我不知道是否有什么办法一旦类型的消息,关闭连接ConnectionClosed是通过发送chatRef

scala akka akka-http

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

Symfony2 - 将参数传递给服务

有没有办法从SESSION或其他来源传递参数到服务?我的捆绑配置中有类似的东西:

<service id="class" class="MyClass">
    <argument key="lang">%class.lang%</argument>
</service>
Run Code Online (Sandbox Code Playgroud)

我知道可以通过从DependencyInjection中的Extension传递参数来完成,但是我不确定这个变量的来源,它可能是会话但在某些情况下它可以从数据库中获取.我只是不想在DependencyInjection中硬编码该参数应该从会话传递.

我也知道我可以从app config传递参数但是在应用程序中进行一些操作之后有没有办法改变它?

php symfony

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