0

我创建了一个扩展(见下面的代码),并通过“加载解压扩展”将它添加到谷歌浏览器。然后我打开它并在关闭 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"
    ]
}

索引.html

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        loaded
    </body>
</html>
4

1 回答 1

0

问题是有两种不同类型的清单文件,你需要两者(歌的文档从未提到这一点!)。

第一个清单是 chrome 应用 manifest.json。我在上面的代码中有这个。虽然此清单文件旨在告诉 Chrome 应用程序所在的文件/url 并且应该被缓存(以供离线使用),但它没有。这由托管服务器上的“.manifest”文件处理,并且必须是“text/manifest”类型的文件。以下是使您的 Chrome 应用程序离线工作的步骤:

将 MIME 类型“文本/清单”添加到您的服务器

(在 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 就会正确缓存所有内容,并且可以离线使用。

于 2013-05-13T19:52:06.773 回答