chrome的tab都载入完毕,status却是loading(附代码)

之前提问过一个相似的问题,不过描述比较随意,潜在的牵涉的东西太多不利于判断。我来痛定思痛自了个简化版的,尽可能复原实际情况。反复测试,但仍然没有什么眉目,按F12似乎没看到正在加载的项目,于是再次求助~

我的思路是,当一个tab被完全载入后,如果这个tab的网址是百度,那么就在一个backgourndscript上的一个叫myarray的数组里储存这个tab。另外再在popup界面设置一个按钮,按下去就输出myarray第一个元素的status。经测试,这第一个元素的status是loading,为何会这样?
图片说明

代码下载

以下是manifest.json

 {   "manifest_version": 2,
    "name": "demo",
    "version": "1.0.0",
    "description": "test",
     "permissions": ["storage","tabs","activeTab","https://*/*" ],

     "background":
    {
        "scripts": ["background.js"],
        "persistent": false
    },
 "content_scripts": 
    [
         {
            "matches": ["https://www.baidu.com/*"],
            "js": ["cc.js"],
            "run_at": "document_end"
        }
    ],
      "browser_action":
    {
        "default_popup": "popup.html"
    }
}

以下是background.js:

  var myarray=[];
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { 
if(request.msgcheck=="ccjs"){myarray.push(sender.tab)}
if(request.msgcheck=="ppjs"){console.log(myarray[0].status);}
});

以下是:cc.js:

 chrome.runtime.sendMessage({msgcheck:"ccjs"}, function(response) {});

以下是pp.js:

 document.getElementById("bt1").addEventListener("click", function(){
chrome.runtime.sendMessage({msgcheck:"ppjs"}, function(response) {});
},false);

以下是popup.html:

 <!DOCTYPE html>
<html>
<head>
<title>pp</title>
</head>
<body>
<input type="submit" value="开始" id="bt1"/>
<script src="pp.js"></script>
</body>
</html>

document_end并不是所有资源加载完毕执行,应该是dom ready就执行了,而且存储的tab应该是当前的状态的一个克隆,并不是引用的,就是页面加载完毕后设置了状态,并不会更新之前压入的tab对象的status属性

经测试放入window.onload中发送信息,并且延时0s执行就可以正确获取状态,不延时也是loading状态,不懂是不是bug,理论window.onload是所有资源加载完毕后才触发的,不需要延时。

 window.addEventListener('load', function () { 

    setTimeout(function () { 
        chrome.runtime.sendMessage({ msgcheck: "ccjs" }, function (response) { });
    }, 0)


},false)

http://tieba.baidu.com/p/2753357916