【问题标题】:location.reload(), Javascript,HTMLlocation.reload(), Javascript,HTML
【发布时间】:2016-02-22 01:21:58
【问题描述】:

当我尝试在我的 HTML 文件中的按钮中使用以下代码时,我总是遇到问题。

onClick=window.location.reload();
mapGenerator();

页面重新加载,但没有出现创建 D3JS 视图的 javascript (mapGenerator)。我做错了什么?

【问题讨论】:

  • 当您重新加载页面时,所有代码都会重置,就好像您以前从未访问过该页面一样。让它与众不同的唯一方法是使用 url 参数或 cookie 没有其他任何东西会持续到新加载的页面
  • @binvention没有别的...? :D
  • @MatíasFidemraizer 嗯,是的,其他一些东西仍然存在,但没有任何东西可以在代码中轻松访问。不是他正在寻找的东西
  • 一旦您重新加载页面,该表达式中的其余 JS 将不会运行。
  • @binvention orly? :d例如, localStorage很难使用?

标签: javascript html onclick


【解决方案1】:

location.reload() 将立即重新加载页面并阻止任何后续代码执行。

但是,您可以创建一个函数来执行您的方法页面已经(重新)加载:

window.onload = function() {
    mapGenerator();
};

此方法将在页面完全加载时每次运行。要仅在使用 location.reload() 重新加载页面后运行代码,您可以通过设置 cookie 然后重新加载页面来创建处理点击的方法。

function handleClick() {
    document.cookie="reload=true";
    location.reload();
}

这需要您将 onClick 值更改为 onClick="handleClick();"。现在,每当页面加载时,您都可以检查 cookie 是否已设置。您的 window.onload 函数现在更改为:

window.onload = function() {
    if(document.cookie.indexOf("reload") >= 0) {
        mapGenerator();
    }
}

检查 cookie 是否存在 - answer by Michael Berkowski

重新加载后,是否要取消设置 cookie 由您决定——如果您不这样做,页面将在每次页面加载时运行函数 mapGenerator,直到 cookie 过期。

如果您需要更多关于 cookie 的帮助,请查看W3Schools' tutorial

【讨论】:

  • 请注意,window.onload 必须在新加载的页面中
  • 我该怎么做?因为我只是在单击按钮后才使用脚本。
  • @RafaelBispo 将该函数添加到您的 JavaScript 文件中,它应该可以工作。
【解决方案2】:

根据您上面提到的描述,点击时将执行两项操作。当第一个动作重新加载页面时,第二个动作就丢失了。如果您希望在页面加载时执行任何操作,请在页面的 onload 事件中提及相同的操作。

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2014-07-02
    • 2014-12-23
    • 1970-01-01
    • 2012-07-14
    • 2019-08-03
    相关资源
    最近更新 更多