2012-04-26 4 views
17

Meine Frage ist ziemlich einfach, ich habe versucht, eine Chrom-Erweiterung zu erstellen, die ein NaCl-Modul aufruft. Meine Schaltfläche und andere Dateien scheinen in Ordnung zu sein, und mein ziemlich einfacher Code in C++ gibt eine PostMessage Hallo Welt zurück. Aber wenn ich es versuche, funktioniert es nicht. Gibt es bestimmte Dinge, die ich nicht getan habe, um ein NaCl-Modul in eine Chrome-Erweiterung aufzunehmen? Ich muss sagen, dass ich ein bisschen die Hoffnung verliere.Hinzufügen von NaCl in einer Chrome-Erweiterung

Hier ist meine "background.html":

<body> 
    <script src="background.js"></script> 
    <div id="listener"> 
    <embed name="nacl_module" 
     id="nacl_correction" 
     src="nacl_correction.nmf" 
     type="application/x-nacl" /> 
    </div> 
    <script > 
    document.getElementById('listener').addEventListener('load', moduleDidLoad, true); 
    </script> 
</body> 

Hier ist mein "background.js":

var NaclCorrectionModule = null; // Global application object. 

function moduleDidLoad() { 
    NaclCorrectionModule = document.getElementById('nacl_correction'); 
    //alert(NaclCorrectionModule); 
    if (NaclCorrectionModule == null) { 
     alert('Out');  
    } 
    else { 
     alert (NaclCorrectionModule);  
    } 
    NaclCorrectionModule.addEventListener('message', handleMessage, false); 
} 
function handleMessage(message_event) { 
    alert(message_event.data); 
} 
chrome.browserAction.onClicked.addListener(moduleDidLoad); 

Und endlich, mein "manifest.json":

{ 
    "name": "Correction de Cordial sous Chrome", 
    "version": "1.0", 
    "background_page" :"background.html", 
    "description": "Intégration d'une extension Cordial pour la correction sous Chrome", 
    "permissions": [ 
    "tabs", "http://*/*" 
    ], 
    "browser_action": { 
    "default_icon": "corriger_big.png", // Icône de l'extension 
    "default_title": "Correction de Cordial" // Titre affiche sur le bouton   
    } 
} 

Wenn jemand irgendwelche Ideen hat, wäre ich dankbar.

Antwort

14

Nach ein wenig suchen, habe ich festgestellt, dass ich etwas vergessen habe. In meinem background.js habe ich keine Nachricht an NaCl gesendet, also kann es nicht funktionieren.

ich nur 1 Zeile hinzufügen benötigt:

NaclCorrectionModule.postMessage(''); 

Danke meine Frage zum Lesen, und ich hoffe, dass dies jemand helfen kann !!