2

「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 を含める必要はありません。

4

2 に答える 2

0

Chrome では、拡張子に属する nmf ロケーションが必要です。空の nmf 属性には、このプロパティはありません。

于 2012-03-02T09:14:47.070 に答える
0

NaCl モジュールがロードされているかどうかを検出するより良い方法は、progress イベントを使用することです。イベントの列挙と例については、https://developers.google.com/native-client/pepper16/devguide/coding/progress-eventsを参照してください。

URL X について -- iframe の URL とコンテナの URL ドメインが異なる場合、イベントがパス iframe を伝播するとは思わない -- そして、Web ストアまたはアンパックされた拡張機能での NaCl の有効化は、URL に対応する (おそらく特別なプロト-仕様; 詳細はわかりません)、それで、あなたが見ているさまざまな組み合わせを説明できるかもしれません. おそらく、webapp マニフェストで設定された URL をどのように指定したかによっても異なります。

コードの testNaclElement には、src= 属性/値のペアがありません。NaCl プラグインのコードを見てからしばらく経ちましたが、それも問題を引き起こす可能性があります。

于 2012-02-29T18:29:57.653 に答える