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