2014-02-13 73 views
0

在我的扩展程序的选项页面中,我显示登录人员的用户名以及注销选项。如果他们注销,我会显示一个链接,要求他们登录。除了可以通过选项页面登录外,他们还可以通过popup.html进行登录。登录状态存储在localStorage中,我可以通过选项页面js访问它。Chrome扩展程序自动刷新选项页面UI

我希望能够以某种方式侦听对此状态的更改,并相应地更新UI。如果通过选项页面进行更改,那么我当然可以更改它。但是,问题是如果用户通过弹出窗口登录,而已经在选项页面上登录。在这种情况下,我仍然会喜欢选项页面UI进行更改,以反映更新后的登录状态。我想到了两种不同的方法:

(1)每次更改登录状态后,脚本都会使用chrome.runtime.sendMessage()向选项脚本发送消息。

(2)在localStorage上添加一个侦听器,当更改登录状态时触发该侦听器。

我试过两种方法,但都失败了。如何根据localStorage变量的值自动刷新我的选项页面的UI,该变量可以在扩展中的不同脚本中更改?

答案可能在(1)或(2)中,但是我使用chrome扩展的经验是有限的,所以我可能已经在编程上弄错了它,并且过早放弃。任何帮助,将不胜感激。

+0

这两种方法似乎正确的,所以你应该告诉你已经尝试什么,以及它是如何不起作用。 – rsanchez

回答

0

因此,我找到了一个答案,允许我在后台和选项页面脚本之间发送消息。我以前曾尝试过使用chrome.runtime.sendMessage等,但是在实现它的过程中必须犯下错误。

options.js脚本:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { 
    switch(request.type) { 
     case "loggedin-status-change": 
      alert(request.data.myProperty); 
     break; 
    } 
    return true; 
}); 

和background.js脚本:

chrome.extension.sendMessage({ 
    type: "loggedin-status-change", 
    data: { 
     myProperty: "1" 
    } 
}); 
相关问题