12

Chrome パッケージ アプリ用に提供された新しい API を使用したいのですが、現在のブラウザ環境でローカル URL を開く機能を保持したいのですが、可能ですか? すべてのパッケージ化されたアプリのチュートリアルは、個別のウィンドウを作成し、アプリをシステムの第一級市民として使用することに重点を置いています。

chrome.socketおそらく開発者モードでのみ、通常どおり他のAPIを使用することは可能でしょうか?

4

2 に答える 2

11

いいえ、設計上不可能です。Chrome パッケージ アプリはブラウザーとは別に実行され、タブなどのブラウザー固有の機能にはアクセスできません。最も近い方法は、window.open を使用して、ブラウザーで (パッケージ化されたアプリではなく) 外部 URL を開くことです。

ただし、webview タグを使用してブラウザをエミュレートすることはできます。その方法については、Browser サンプルのコードを参照してください。

リリースされたばかりのメッセージング API を使用して、パッケージ化されたアプリと通信する拡張機能をインストールすることもできます。方法については、メッセージングのサンプルを参照してください。アプリと拡張機能の ID を知っていれば、非常に簡単です。

于 2013-01-15T17:04:45.923 に答える
4

Edit: this is unsupported/likely to break in Chrome 44/45+ or so. There was around March 3rd a code review which does indeed break window.open from background page, but was reverted temporarily. So expect this to not work starting around Chrome 50?

It actually is possible (in Chrome 43) to run your chrome platform packaged app in a browser tab. From your background page, simply call window.open with a URL of some content in your app. for example if index.html is in your app's directory, it will open your app in a browser tab with URL chrome-extension://{{ extension id }}/index.html

This should not require any extra manifest permissions.

Note that it will not work if you simply type the url chrome-extension://{{ extension id }}/index.html into your browser. You need to open it from the app's background script.

于 2015-06-04T20:02:29.027 に答える