【发布时间】:2021-05-17 05:54:48
【问题描述】:
我正在尝试将一个包含 HTML 元素的变量保存到 localStorage 中,这样我可以随时(从 localStorage)再次调用该变量。
我正在chrome扩展的后台和内容脚本中执行javascript
所以我创建了变量并使用要保存的 HTML 元素加载它:
var btnelm = document.getElementById("ELM_ID");
然后我尝试将该变量保存到 localStorage(希望以后能够使用该变量)
localStorage["btnelm"] = btnelm;
但是当我调用 localStorage 时,我需要它在我的变量中包含 html 元素
localStorage["btnelm"]
我得到了这个字符串文本(而不是我的 btnelm 变量中的实际 html 元素:
[object HTMLInputElement]
这当然意味着,当我将 localStorage["btnelm"] 视为包含我的 html 元素的变量时,它不起作用:
localStorage["btnelm"].innerHTML 返回undefined
我知道 localStorage 只存储 string 值,所以我有什么选择可以存储我的
btnelm 并且当被调用时,能够像我第一次创建时一样对待它(例如,使用 .childern 访问它)
提前致谢
【问题讨论】:
-
你不能在 storage 中存储 DOM 元素。你可以在那里存储
btnelm.innerHTML。 -
@wOxxOm 所以我试图实现的场景是不可能的?甚至使用 localStorage 之外的任何其他方法
-
为什么下次需要时不再次查询 DOM?您可以将它放在一个变量中并访问它,直到页面刷新,然后在超出范围时再次获取它。您不应该在 UI 上下文之外处理 DOM。
标签: javascript google-chrome-extension local-storage