在chrome扩展中引入加载时间延迟

时间:2011-04-26 23:08:43

标签: google-chrome tabs load google-chrome-extension delay

对于一个研究项目,我正在编写一个chrome扩展,当我去某个url时,它应该引入2秒的加载延迟。所以基本上我想要用户在“example.com”中输入的效果,他们必须在页面开始加载之前再等待2秒。有什么办法可以用chrome扩展吗?我已经搜索了文档,但似乎找不到这样的东西。

2 个答案:

答案 0 :(得分:2)

Chris的解决方案可行,但它会锁定UI。您也可以尝试这个简单的内容脚本:

content_script.js:

document.documentElement.style.display = 'none';
setTimeout(function() {document.documentElement.style.display = '';}, 1000);

的manifest.json:

{
  "name": "Delay webpage displays",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["content_script.js"],
      "run_at": "document_start"
    }
  ]  
}

我必须说,虽然这很烦人。此外,精明的用户会知道某些事情已经发生,因为即使没有“等待www.example.com ...”状态行,它也会显示空白页。

如果您想完全模仿慢速网络,我认为最好的方法是创建引入延迟的HTTP / HTTPS(或SOCKS5)代理。您可以通过创建proxy.pac文件或使用Chrome experimental proxy API使浏览器仅在某些网址上使用代理。

那么你想要模拟什么?如果要模拟高CPU JS或渲染,请使用Chris的解决方案。如果要模拟慢速网络,请使用代理。我的解决方案模拟了一个缓慢的网络,但它并不是一个完美的伪装。

答案 1 :(得分:1)

manifest.json文件中,添加:

"content_scripts": [{
    "matches": ["http://*.example.com/*"], // add in different URLs here
    "js": ["sleep.js"],
    "run_at": "document_start"
}]

并创建一个包含以下内容的sleep.js文件:

function sleep (seconds) {
    var start = new Date().getTime();
    while (new Date() < start + seconds*1000) {}
    return 0;
}
sleep(2);

(从phpjs找到)

因此,如果有人访问www.example.com,页面将在加载前等待2秒。 但是,如果页面重定向到另一个页面(example.com会这样做,那么这将不会起作用,因此尝试使用不同的站点会更好)。)

查看manifest docs了解详情。