谷歌Chrome应用程序 - 检查应用程序或常规站点

时间:2014-09-30 10:09:48

标签: javascript google-chrome google-chrome-app

我正在开发的项目将以Chrome App& amp;常规网站。

如果我在Chrome应用中,如何测试/检查我的JS? (即某些功能只能在chrome下工作)

仅供参考,这是我的Chrome应用清单,请注意我在开发者模式下运行此功能(直接来自源代码,尚未打包)

{
    "manifest_version": 2,
    "name": "Example KIOSK APP",
    "version": "1.1",
    "icons": {
        "16": "images/icon-16.png",
        "48": "images/icon-48.png",
        "128": "images/icon-128.png"
    },
    "app": {
        "background": {
            "scripts": ["background.js"],
            "persistent": true
        }
    },
    "kiosk_enabled": true,
    "offline_enabled": true,
    "permissions": [
        "system.display",
        "power",
        "webview",
        "fileSystem",
        "alwaysOnTopWindows",
        "system.storage",
         "<all_urls>"
    ]
}

任何建议都非常感谢。

2 个答案:

答案 0 :(得分:6)

原来问题是要区分网页中运行的相同代码和(常规)Chrome App窗口内的相同代码。

测试从未暴露在常规网页上的Chrome App API就足够了。一个例子是测试app.runtime

if (window.chrome && chrome.app && chrome.app.runtime) {
  // Running inside a Chrome App context
} else {
  // Either not Chrome, or not as an app window
}

答案 1 :(得分:2)

编辑:这个答案与此特定问题无关,但我想我会留下这个以防万一有人在托管应用中偶然发现这个问题。

我认为通过&#34;运行Chrome App&#34;你的意思是hosted Chrome App

在这种情况下,只需检查网站代码中的chrome.app.isInstalled即可。在文档中找到它并不容易,因为它显然被忽略了,但我会将this作为参考。我刚检查过它仍然有效。

所以:

// Website code
if (window.chrome && chrome.app && chrome.app.isInstalled) {
  // App is installed
} else if (chrome) {
  // In Chrome, but app is not installed: offer inline install?
} else {
  // Not in Chrome at all
}