我正在使用弹出窗口进行chrome扩展。 Popup有一个表单。问题是:
假设用户填写了表单的一半并决定在应用程序之间切换。当他返回时,弹出窗口已关闭,他必须再次打开弹出窗口并再次填写所有细节。我想在弹出窗口关闭之前在localStorage
中保存数据。我之前在使用window.onbeforeunload
和window.unload
的网页中完成了此操作,但这些似乎无法在弹出窗口中使用。
我尝试过的事情:
window.onbeforeunload
:当我使用开发人员工具中的location.reload()
(检查弹出窗口)时,会触发此事件并将数据存储在localStorage中。但在正常运行期间(没有开发人员工具并在弹出窗口外点击),此事件不会被触发(我通过检查localStorage
中的值确认)
chrome.runtime.connect
:使用chrome.runtime.connect
连接到后台页面,当弹出窗口关闭时,port.onDisconnect
会在后台页面中触发。这只会告诉我弹出窗口何时关闭。在我从弹出窗口请求数据之前,它已经关闭。
window.unload
:这似乎适用于某些人,但我遇到与window.onbeforeunload
blur
事件(工作但效率不高):在所有输入字段上添加blur
,当这些输入字段中的任何一个失去焦点时,保存所有填充的值。即使用户在弹出窗口外点击,它也会被触发。但这不是一种有效的方式。
还有其他选择吗?