在选项页面中创建新对象时遇到“小”问题。
在选项页面中,我创建了一些对象并将其保存为常规设置。这些对象具有与不同API通信的方法。但是一旦我得到其中一个对象,我就失去了我在页面上的上下文。
例如:
选项页面我创建了一个具有方法'request'的对象,并使用此方法向某个api发送ajax请求。当我在另一个页面上调用它时,ajax请求将记录在选项页面中。当我关闭选项页面时,我会丢失所有日志的上下文。
有没有办法强制上下文引用到当前页面?或者我在错误的页面上创建对象/保存它们并在需要它们的页面上检索它们时犯了错误? (IE我应该只保存在页面本身上创建对象所需的数据吗?(对于相同的东西(?),这似乎有很多开销)。
提前致谢。
修改
我有一个创建Object的选项页面,可以将其命名为MyApi。我创建了一个新的MyApi并将其存储在chrome.storage.local中。当用户选择了一些文本并单击上下文菜单时,我打开一个新页面(selectedText.html),显示所选文本并进行一些API调用,这些调用主要是ajax请求。当我从selectedText.html中的存储中获取对象并使用MyApi发出任何请求时,我看到ajax请求的网络选项卡中没有日志,也没有任何控制台日志。但随着我的选项页打开,我看到了那里的一切。
EDIT2
save : function()
{
var obj = {'api':this.data};
chrome.storage.local.set(obj,function() { if(chrome.runtime.lastError) console.warn(chrome.runtime.lastError); });
}
这是在后台脚本中。
答案 0 :(得分:0)
你可以通过这种方式实现你想要的目标:
window
对象。示例:
在background.js中:
function myFunc(winObj, msg) {
winObj.console.log(msg);
}
在otherPage.js中:
chrome.runtime.getBackgroundPage(function(bgPage) {
bgPage.myFunc(window, "This will be logged in 'otherPage.html' !");
});
这不是最干净的解决方案,但可能会有效......