Google chrome extension 我如何让我的chrome扩展启动并运行?
编辑:代码中似乎有问题。有人知道如何修复这个错误吗 我得到的错误是: 未捕获的语法错误:意外标记“')” contentscript.js:103(匿名函数) 就上下文而言,我不是一个开发人员或软件工程师,只是一个对IBM Watson的产品感兴趣的普通人。我想构建我自己的Chrome扩展,它可以分析我从笔记本电脑上写下的信息的音调,所以我遵循了IBM手册中描述的所有步骤。令我惊讶的是,尽管我的技术知识有限,我还是设法完成了本文档中描述的步骤 在执行步骤5之后,我看到我的扩展成功地显示在中chrome://extensions/ 但是,我无法重现步骤6。右键单击时,不会显示IBM watson API菜单Google chrome extension 我如何让我的chrome扩展启动并运行?,google-chrome-extension,ibm-watson,Google Chrome Extension,Ibm Watson,编辑:代码中似乎有问题。有人知道如何修复这个错误吗 我得到的错误是: 未捕获的语法错误:意外标记“')” contentscript.js:103(匿名函数) 就上下文而言,我不是一个开发人员或软件工程师,只是一个对IBM Watson的产品感兴趣的普通人。我想构建我自己的Chrome扩展,它可以分析我从笔记本电脑上写下的信息的音调,所以我遵循了IBM手册中描述的所有步骤。令我惊讶的是,尽管我的技术知识有限,我还是设法完成了本文档中描述的步骤 在执行步骤5之后,我看到我的扩展成功地显示在中chr
我错过了什么?有人有任何指示吗?切换到具有普通网页的选项卡,然后在那里尝试。如果选项卡不起作用,请重新加载它。我已经尝试过了,但再次分析后,问题似乎出现在代码中-更多详细信息见下面的注释
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
});