我创建了一个扩展程序(请参阅下面的代码),我通过“load unpacked extension”将其添加到Google Chrome中。然后我打开它并在关闭Web服务器之前使用它(它是一个内部服务器)。当我点击使用该应用程序时,它只是在“请求”时挂起。如何强制它仅在离线和本地使用应用程序?
我甚至从计算机上拔掉了以太网(没有wifi),所有其他扩展程序都显示为灰色,但我的颜色仍然保持不变,但是当我点击它时它就抛出了错误:
The app is currently unreachable.
为什么?
manifest.js
{
"name": "Test App",
"description": "Something",
"version": "0.0.0.3",
"manifest_version": 2,
"app": {
"urls": [
"*://192.168.1.100/chrome/app/"
],
"launch": {
"web_url": "http://192.168.1.100/chrome/app/"
}
},
"icons": {
"128": "icon.png"
},
"offline_enabled": true,
"permissions": [
"unlimitedStorage",
"notifications"
]
}
的index.html
<!DOCTYPE html>
<html>
<head></head>
<body>
loaded
</body>
</html>
答案 0 :(得分:0)
问题在于,有两种不同类型的清单文件,您需要两者(和谷歌的文档从未提及过这一点!)。
第一个清单是chrome app manifest.json。我在上面的代码中有这个。虽然此清单文件旨在告诉Chrome应用程序所在的文件/网址应该缓存(对于离线可用性),但不会。这由位于托管服务器上的“.manifest”文件处理,并且必须是“text / manifest”类型的文件。以下是让您的Chrome应用脱机工作的步骤:
将mime类型“text / manifest”添加到您的服务器
(在Apache中,您可以将以下内容添加到httpd.conf或.htaccess):
AddType text/cache-manifest .manifest
它不需要命名为“.manifest”,但更容易以这种方式添加mimetype
将链接到index.html的清单设置为指向 清单而不是manifest.json:
<!DOCTYPE html>
<html manifest="mymanifest.manifest">
创建清单文件
CACHE MANIFEST
# These are the files that will be cached and available offline
# Their paths are relative to the manifest file
# These files will all load from AppCache and NOT from the server, BUT
# if you want to update them, simply change the manifest file and the browser
# will redownload them
CACHE:
index.html
icon.png
# This would be files that are not cached but live only online
NETWORK:
# Files that are used if any other files cannot be loaded
# example:
# someimage.png fallbackimage.png
FALLBACK:
就是这样。用户在线访问应用后,Chrome会正确缓存所有内容,并且可以离线使用。