谷歌浏览器应用程序 - 检查应用程序或常规网站
问题描述:
我正在处理的项目将作为Chrome应用程序&常规网站运行。谷歌浏览器应用程序 - 检查应用程序或常规网站
如果我在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>"
]
}
任何建议非常感谢。
答
原来指在网页中和(常规)Chrome App窗口中运行相同的代码来区分的问题。
测试从不暴露于常规页面的Chrome应用程序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
}
答
编辑:这个答案结果与这个特定的问题没有关系,但我想我会离开这个以防有人用托管的应用程序绊倒这个问题。
我假设通过“作为Chrome应用运行”,您的意思是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
}
好的,那么这是一个相当概念性的混乱。这不是托管的应用程序,但现在称为“Chrome应用程序”。但是Chrome应用从概念上将其所有资源捆绑在一起;你将如何运行与网站相同的代码? ''? –
Xan
2014-09-30 10:33:07
@Xan - app是用AngularJS编写的。例如,我将使用'ng-switch-when'显示extranal站点,否则使用Chrome浏览器App的'webview'和普通'iFrames'。因此,我需要一个检查,以确保我在应用程序或只是一个浏览器。 – Iladarsda 2014-09-30 10:35:22
重新说明:如果您的应用程序代码完全运行(background.js,您创建的窗口),那么您就在一个应用程序中。并且您希望将“我是来自Chrome应用程序”的信息传递给“”内的页面。正确?如果是,请编辑该问题以澄清它。 –
Xan
2014-09-30 10:36:54