Google chrome extension 我如何让我的chrome扩展启动并运行?

Google chrome extension 我如何让我的chrome扩展启动并运行?,google-chrome-extension,ibm-watson,Google Chrome Extension,Ibm Watson,编辑:代码中似乎有问题。有人知道如何修复这个错误吗 我得到的错误是: 未捕获的语法错误:意外标记“')” contentscript.js:103(匿名函数) 就上下文而言,我不是一个开发人员或软件工程师,只是一个对IBM Watson的产品感兴趣的普通人。我想构建我自己的Chrome扩展,它可以分析我从笔记本电脑上写下的信息的音调,所以我遵循了IBM手册中描述的所有步骤。令我惊讶的是,尽管我的技术知识有限,我还是设法完成了本文档中描述的步骤 在执行步骤5之后,我看到我的扩展成功地显示在中chr

编辑:代码中似乎有问题。有人知道如何修复这个错误吗

我得到的错误是: 未捕获的语法错误:意外标记“')”

contentscript.js:103(匿名函数)

就上下文而言,我不是一个开发人员或软件工程师,只是一个对IBM Watson的产品感兴趣的普通人。我想构建我自己的Chrome扩展,它可以分析我从笔记本电脑上写下的信息的音调,所以我遵循了IBM手册中描述的所有步骤。令我惊讶的是,尽管我的技术知识有限,我还是设法完成了本文档中描述的步骤

在执行步骤5之后,我看到我的扩展成功地显示在中chrome://extensions/

但是,我无法重现步骤6。右键单击时,不会显示IBM watson API菜单


我错过了什么?有人有任何指示吗?

切换到具有普通网页的选项卡,然后在那里尝试。如果选项卡不起作用,请重新加载它。我已经尝试过了,但再次分析后,问题似乎出现在代码中-更多详细信息见下面的注释
const translatorapikey = "XXX";
const toneanalyzerapikey = "XXX";

function getAPIKeyV2(apikey){
  return new Promise(function(resolve, reject){
  var xmlRequest = new XMLHttpRequest();
     if(window.XMLHttpRequest){
       xmlRequest.open("POST", "https://iam.bluemix.net/identity/token")
       xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       xmlRequest.setRequestHeader("Accept", "application/json")

       xmlRequest.send(encodeURI("grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey="+apikey));

       xmlRequest.onreadystatechange = function(){

         if(xmlRequest.readyState ==4 && xmlRequest.status==200) {

             var parsedData = JSON.parse(xmlRequest.responseText)

             resolve (parsedData.access_token);
         }
     }

     }

  });

}

 var callToneAnalyzer = function (word) {
 var textContent = String(word.selectionText);

 var xhr = new XMLHttpRequest();
 var toneanalyzertoken = getAPIKeyV2(toneanalyzerapikey);
 toneanalyzertoken.then(function(result){
 var inputContent = textContent.replace(/%20/g, "");
 xhr.open("GET", "https://api.us-south.tone-analyzer.watson.cloud.ibm.com/api/v3/tone?sentences=true&version=2016-05-19&text="+inputContent)
 xhr.setRequestHeader("Authorization", "Bearer "+result);
 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 xhr.setRequestHeader("Accept", "application/json")

 xhr.send();

 xhr.onreadystatechange = function(){
 if(xhr.readyState == 4 && xhr.status==200){
 var result1 = xhr.responseText;

 var obj = JSON.parse(result1);

 var fulltone  = obj.document_tone.tone_categories;
 var angerTone = obj.document_tone.tone_categories[0].tones[0].tone_name;
 var angerScore = obj.document_tone.tone_categories[0].tones[0].score;

 var disgustTone = obj.document_tone.tone_categories[0].tones[1].tone_name;
 var disgustScore = obj.document_tone.tone_categories[0].tones[1].score;

 var fearTone = obj.document_tone.tone_categories[0].tones[2].tone_name;
 var fearScore = obj.document_tone.tone_categories[0].tones[2].score;

 var joyTone = obj.document_tone.tone_categories[0].tones[3].tone_name;
 var joyScore = obj.document_tone.tone_categories[0].tones[3].score;

 var sadnessTone = obj.document_tone.tone_categories[0].tones[4].tone_name;
 var sadnessScore = obj.document_tone.tone_categories[0].tones[4].score;

  alert(angerTone  + "=  " + angerScore*100 + " %" + ";" + "\n" +  disgustTone + "= "  + disgustScore*100  + " %" + "\n" + fearTone + "= " + fearScore*100 + " %" + "\n" + joyTone + "= " + joyScore*100 + " %" + "\n" + sadnessTone  + "= " + sadnessScore*100 + " %");

     }
 }
 })

};

function Translator(word, lang, langname) {
    var textContent = String(word.selectionText);

    var accesstoken = getAPIKeyV2(translatorapikey);

    accesstoken.then(function(result){
     var inputContent = textContent.replace(/%20/g, " ");
     var xmlRequest = new XMLHttpRequest();

     if(window.XMLHttpRequest){

     xmlRequest.open("POST", "https://api.us-south.language-translator.watson.cloud.ibm.com/api/v3/translate?version=2018-05-01")
     xmlRequest.setRequestHeader("Authorization", "Bearer "+ result);
     xmlRequest.setRequestHeader("Content-type", "application/json");
     xmlRequest.setRequestHeader("Accept", "application/json");
     var data = {
         "text": inputContent,
         "source": "en",
         "target": String(lang)
     }
     xmlRequest.send(JSON.stringify(data));

 xmlRequest.onreadystatechange = function() {
     if(xmlRequest.readyState ==4 && xmlRequest.status==200){
         var translatedtext = JSON.parse(xmlRequest.responseText);
         alert("Translated to  " + langname + "\n" + JSON.stringify(translatedtext.translations));
     }
 }

    })
}

function generalTranslator(word) {

    var childname = word.menuItemId;

    if (childname == 'child1') {
        Translator(word, 'es', 'Spanish');
        return;
    }
    if (childname == 'child2') {
        Translator(word, 'ar', 'Arabic');
        return;
    }
    if (childname == 'child3') {
        Translator(word, 'fr', 'French');
        return;
    }
    if (childname == 'child4') {
        Translator(word, 'pt', 'Portuguese');
        return;
    }
    if (childname == 'child5') {
        Translator(word, 'de', 'German');
        return;
    }
}

chrome.contextMenus.create({
    title: "IBM Watson API V1",
    id: 'parent',
    contexts: ["selection"]
});

chrome.contextMenus.create({
    title: "Translate to Spanish",
    parentId: "parent",
    id: "child1",
    contexts: ["selection"],
    onclick: generalTranslator
});

chrome.contextMenus.create({
    title: "Translate to Arabic",
    parentId: "parent",
    id: "child2",
    contexts: ["selection"],
    onclick: generalTranslator
});

chrome.contextMenus.create({
    title: "Translate to French",
    parentId: "parent",
    id: 'child3',
    contexts: ["selection"],
    onclick: generalTranslator
});

chrome.contextMenus.create({
    title: "Translate to Portuguese",
    parentId: "parent",
    id: 'child4',
    contexts: ["selection"],
    onclick: generalTranslator
});

chrome.contextMenus.create({
    title: "Translate to German",
    parentId: "parent",
    id: 'child5',
    contexts: ["selection"],
    onclick: generalTranslator
});

chrome.contextMenus.create({
    title: "Tone Analyzer",
    parentId: "parent",
    id: 'child6',
    contexts: ["selection"],
    onclick: callToneAnalyzer
});