【问题标题】:When moving to new URL with Chrome console, is there a way to keep variables alive?使用 Chrome 控制台移动到新 URL 时,有没有办法让变量保持活动状态?
【发布时间】:2019-02-08 14:42:34
【问题描述】:

无论是 Chrome 控制台,我都是 JavaScript 的新手。

我对文献的搜索不足以回答这个问题。

但我发现很难找到任何以前的问题告诉我“当您在 Chrome 控制台中移动到新 URL 时如何防止变量刷新(?)”。

例如,假设我现在在 Google 起始页(“https://www.google.com/”)中

然后我打开 Chrome 控制台,使整数变量和函数像这样......

a = 10

function myFunc(){
    console.log("Hello")
}

之后,我使用此代码转到 Yahoo 主页

this.document.location = "https://www.yahoo.com/"

然后,正如你所料,我之前定义的变量和函数是GONE

当我尝试在 Yahoo 中调用我以前的变量 a 时,

Uncaught ReferenceError: a is not defined
    at <anonymous>:1:1

直到现在我都被这个问题困住了。

我想知道如何告诉浏览器在移动到新 URL 时保持变量和函数活动

【问题讨论】:

  • 你不能,结束。
  • @deceze♦ 我担心 deceze 是对的 :(
  • 是的,他是对的。也许我必须另寻出路。
  • 虽然这个问题已经结束,但我发现使用带有 python Selenium 模块的 Chrome 驱动程序是一个选项。

标签: javascript google-chrome


【解决方案1】:

您在控制台中所做的一切,都是在当前页面的上下文中进行的(它的window 全局对象和本地范围)。如果你改变页面,这个上下文就消失了。

但如果您在开发者工具的“Sources”标签(和“Snippets”子标签)中使用便签本脚本,您可以快速重新初始化状态。只需创建一个新脚本并按 Ctrl+S。然后,您可以在每次更改页面时在此脚本的上下文菜单中选择“运行”,并重新创建状态:

【讨论】:

  • 感谢您教会我“上下文”的概念。现在,Snippets 对我来说似乎是一种实用的方法。
【解决方案2】:

不,你不能,但是如果你想“保存”一些值,你可以将它们发送到你的服务器(作为带有 json 的 ajax 请求)或将它们作为链接参数,例如https://your.server.com/save?a=valueOfA(当然服务器必须支持这个参数并返回响应,这将为正确的变量设置正确的值)

【讨论】:

  • 没有任何保留控制台中的变量,也不是您可以使用它保留功能......
  • 感谢您的回复。按照你的建议,我会看看 ajax。
【解决方案3】:

您可以使用localStorge() 将数据保存在客户端浏览器上,它不适用于只想提及它的功能

【讨论】:

  • 并不是说这会保留变量或函数,或跨域工作……
  • 我在这个回复中新看到了“localStorage”,所以我在谷歌中搜索并找到了有解释的MDZ web doc。他们说“......它们在页面加载过程中保持不变。”。当我尝试 localStorage["a"] = "Hello" 时,即使在 page_refreshing 之后,这个东西仍然存在!但不幸的是,localStorage 在移动到其他 URL 后无效(但在返回原始网页时仍然存在)。这对我来说很有趣。也许 localStorage 仅在该特定上下文中有效。还是谢谢!
猜你喜欢
  • 2018-11-02
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
相关资源
最近更新 更多