Javascript 通过Opera Extension上的不同上下文传递范围实例

Javascript 通过Opera Extension上的不同上下文传递范围实例,javascript,google-chrome-extension,opera,Javascript,Google Chrome Extension,Opera,我正在为Opera开发一个扩展,这对我来说绝对是第一次,我希望在某个时候保存用户高亮显示某些文本的上下文,以便当用户刷新站点或稍后重新打开站点时,高亮显示的文本将高亮显示。我执行一个执行高亮显示的js脚本,它将其发送回后台进程,后台进程将其存储在一个数组中(现在我希望它至少在Opera的单个会话中保持持久性)。然后,一旦任何选项卡完成加载,后台进程将运行另一个js脚本,突出显示该网页中以前保存的任何文本。为此,我有一个高亮显示对象,当前有高亮显示的文本、源url和ID。我尝试传递用于高亮显示文本

我正在为Opera开发一个扩展,这对我来说绝对是第一次,我希望在某个时候保存用户高亮显示某些文本的上下文,以便当用户刷新站点或稍后重新打开站点时,高亮显示的文本将高亮显示。我执行一个执行高亮显示的js脚本,它将其发送回后台进程,后台进程将其存储在一个数组中(现在我希望它至少在Opera的单个会话中保持持久性)。然后,一旦任何选项卡完成加载,后台进程将运行另一个js脚本,突出显示该网页中以前保存的任何文本。为此,我有一个高亮显示对象,当前有高亮显示的文本、源url和ID。我尝试传递用于高亮显示文本的范围,但一旦范围对象被发送到后台进程,它就作为通用对象接收,我无法使用

所以我现在面临的问题是,一旦页面加载,我知道之前在该页面上突出显示了哪些文本,但我没有办法突出显示它们


我想我想做的事情(传递范围,或开始和结束容器)没有什么意义,但我想不出其他方法,也无法在网上找到任何帮助。

页面在刷新期间可能会更改,因此简单的范围可能无法从元素/对象中工作,
range
包括在内,不支持JSON,因此无法在chrome.storage中发送消息或保存,因此您必须使用其他方法来标识选择。想法:您可以在所有元素的平面列表中存储范围元素的偏移量,例如
document.getElementsByTagName('*')。indexOf(element)