我正在尝试开发一个Chrome扩展程序,在建议框中显示一些结果。
我可以看到我应该的建议但是当我点击其中一个时没有任何反应。同样也适用于默认建议。我在控制台中收到错误说。
错误在某种程度上看起来像谷歌编写的代码编译它。
未捕获错误:第16行第1行出错:EntityRef:期待&#39 ;;' 扩展::多功能框:41
以下是代码:
chrome.omnibox.onInputChanged.addListener(function(text, suggest){
var suggestions = [];
var omdbAPI = 'http://www.omdbapi.com/?' + 's=' + text.split(' ').join('+');
var req = new XMLHttpRequest();
req.open('GET', omdbAPI , true);
req.send();
req.onreadystatechange = function(){
if(this.readyState === 4 && this.status == 200) {
var data = JSON.parse(this.responseText);
if(data.Response == "True"){
data.Search.map(function(a){
suggestions.push({
description: a.Title + ' (' +a.Year + ')',
content: 'www.imdb.com/title/' + a.imdbID
});
});
console.log(suggestions);
suggest(suggestions);
}
}
}
chrome.omnibox.setDefaultSuggestion(
{
description: 'Search on IMDB: ' + text
}
);
});
答案 0 :(得分:0)
如果您希望在单击选项时发生某些事情,请为chrome.omnibox.onInputEntered
事件注册一个侦听器。
至于错误,
未捕获错误:第16行第1行出错:EntityRef:expecting';' 扩展::多功能框:41
此错误消息是由description
property of the suggestion中的无效XML引起的。从文档(强调我的):
网址下拉列表中显示的文字。可以包含用于样式的XML样式标记。支持的标签是'url'(用于文字URL),'match'(用于突出显示与用户查询匹配的文本)和'dim'(用于暗淡的帮助文本)。样式可以嵌套,例如。黯淡的比赛。 您必须转义五个预定义实体才能将其显示为文字:stackoverflow.com/a/1091953/89484
最后,我已经创建了一个扩展程序,为IMDB上的搜索提供搜索建议,请参阅https://chrome.google.com/webstore/detail/imdb-search/cbongpcdgehbfeajgkndgkbdkkfdmdik。 您可以查看源代码以获得一些灵感,或者在符合您需求的情况下安装它。要查看或下载源代码,可以使用Chrome extension source viewer(也是我)。