为什么我的Omnibox建议没有重定向到另一个页面?

时间:2016-06-22 17:00:19

标签: javascript google-chrome-extension

我正在尝试开发一个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
    }
  );
});

1 个答案:

答案 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(也是我)。