「NaCl は現在、Chrome ウェブストアのアプリケーション/拡張機能、または開発目的で展開された拡張機能に対してのみ、デフォルトでオンになっています。」- インターネット
それでも、展開された拡張機能から NaCl を使用できないようです。(ウェブストアは試していません。)
background.js に次のような非常に単純なテスト拡張機能があります。
function clicked() {
var testNaclElement = document.createElement("embed");
testNaclElement.setAttribute("type","application/x-nacl");
testNaclElement.setAttribute("width",0);
testNaclElement.setAttribute("height",0);
document.body.appendChild(testNaclElement);
alert(testNaclElement.postMessage?true:false);
document.body.removeChild(testNaclElement);
}
chrome.browserAction.onClicked.addListener(updateIcon);
updateIcon();
この拡張機能は、chrome://flags で NaCl が有効になっている場合は true を報告しますが、chrome://flags (デフォルト) で NaCl が無効になっている場合は false を報告します。
私はそれが真実を報告することを期待していました。
私は何が欠けていますか?
アップデート:
結局のところ、独自の検出コードを発明することはあまり良い考えではないようです。URL X を指すアンパックされた chrome webapp を作成してインストールすると、そのページで NaCl が機能しますが、この検出コードは false を報告しますが、chrome で NaCl が有効になっている通常の web ページでは、まったく同じコードが true を報告します。 //フラグ。
ただし、URL X を指す iFrame で NaCl を使用する拡張機能 (Chrome Web アプリケーションではない) を作成すると、NaCl は機能しません。
しかし、URL X を指す Web アプリケーションと、iFrame で URL X を使用する拡張機能を作成すると、同時にインストールすると両方が機能します。
Update2: 実際に拡張機能に nmf と nexe を含めると、機能します。
Update3: 拡張機能に nexe を含める必要はありません。