小编Ste*_*ten的帖子

Chrome中的页面重新加载在重新加载页面之前不必要地触发绑定事件

希望有人对此有一个很好的答案:

为什么Chrome(14.0)会在刷新页面时触发文档就绪和窗口加载事件?请注意,我不是在谈论新页面加载时会发生什么,而是在加载之前.请参阅以下代码:

<form name="form1" method="post" action="tmp.aspx?a=1" id="form1">
<script type="text/javascript">

    $(document).ready(function () { console.log('document/ready' + new Date()); });

    $(window).load(function () { console.log('window/load' + new Date()); });

</script>

<a href="tmp.aspx?a=1">tmp</a>
</form>
Run Code Online (Sandbox Code Playgroud)

当我第一次访问页面时,我在控制台上获得两个输出,一个用于文档/就绪,一个用于窗口/加载.当我刷新页面时,会快速输出两个,并在此之后立即输出两个(从新页面视图).如果我只是单击直接返回到同一页面的链接(tmp.aspx),则不会发生这种情况.

我相信对此有一个很好的解释.

问候!

编辑:在页面刷新之前,对$(document).ready()和$(window).load()进行了额外调用.因此,当我第一次加载页面时,他们的方法被调用一次,然后我点击刷新并且在页面重新加载之前再次调用方法.之后,当页面刚重新加载时,这些方法称为第三次.

javascript jquery google-chrome javascript-events google-chrome-devtools

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

如何从Google Developer API获取订阅的历史付款列表?

通过使用Google Play Developer API和电话https://www.googleapis.com/androidpublisher/v2/applications/{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}(https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get),可以获取有关订阅是否仍然有效的信息.

如何在orderId不猜测的情况下找出每笔付款(通过这样做:https://developer.android.com/google/play/billing/billing_subscriptions.html)?是否可以通过对API的服务帐户调用获取用户订阅的所有历史付款?(例如,使用purchaseToken和subscriptionId).

in-app-purchase google-play-developer-api

6
推荐指数
0
解决办法
452
查看次数

在C#中缓存存储过程结果的最佳方法

我在ASP.NET/C#/ SQL Server 2012中运行一个网站,需要缓存一些存储过程查询的结果.结果应该是绝对过期.有什么选择可以做到这一点?

最好设置command.ExpirationDateTime = DateTime.Now.AddMinutes(10)会很棒,但据我所知,这是不可能的.

编辑:数据将从API返回,因此无法使用页面或用户控件进行缓存.

c# sql-server caching stored-procedures

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

适当设置需要粘性会话的负载均衡网络?

我在这个问题上找到了许多问答,但我还没有找到适合我们服务器的配置.背景是:我们在负载均衡器后面有两个Web服务器,并且必须确保用户不会丢失其会话.

  • Web服务器是IIS7/ASP.NET 4.
  • 我们目前无法设置单独的会话状态服务器,因此必须在LB上使用粘性会话.

据我了解,必须确保以下内容:

  • 在两台Web服务器上设置相同的机器密钥.
  • 使用预编译的站点,以便程序集在两台计算机上获得相同的命名.
  • 我们要么必须在ip-number或cookie上设置粘性会话(后者是首选的)

是否有必要预编译站点?(我知道它更快,但我们失去了一些灵活性)

由于我们有粘性会话,使用相同的机器密钥只会影响用户会话超时并且因此他/她最终在另一台服务器上的情况是正确的(这意味着包含视图状态的回发可能无效,除非他们有相同的机器钥匙?)

asp.net iis load-balancing

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

如何防止内联函数绑定到旧状态值

在使用钩子的 React 组件的项目中,我试图了解如何正确避免调用绑定到旧状态值的回调。下面的例子说明了这个问题(但不是我正在处理的代码)。

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

const Message = () => {
  const [message, setMessage] = useState("");

  function doStuff() {
    console.log(message);
  }

  useEffect(() => {
    setInterval(doStuff, 1000)
  }, []);

  return (
    <div>
      <input
        type="text"
        value={message}
        placeholder="Enter a message"
        onChange={e => setMessage(e.target.value)}
      />
      <p>
        <strong>{message}</strong>
      </p>
    </div>
  );
};

const rootElement = document.getElementById("root");
ReactDOM.render(<Message />, rootElement);
Run Code Online (Sandbox Code Playgroud)

这里的问题当然是setIntervaldoStuff函数保持在第一次(也是唯一一次)调用效果时的状态。那时message状态为空,因此,间隔函数将每秒打印一个空字符串,而不是实际在文本框中的消息。

在我的实际代码中,我有外部事件应该触发组件内部的函数调用,并且它们会遇到同样的问题。

我该怎么办?

javascript reactjs react-hooks

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

如何将SpriteKit存档与SKSpriteNode子类一起使用

我如何使用SpriteNode所在的spritekit存档文件,并将SpriteNode实例化为"子"(使用Swift?)

我可以使用scene.childNodeWithName("mysprite")找到该节点,但我不知道如何将它变成我的SKSpriteNode子类的实例.

sprite-kit swift

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