chromeで以下の処理を行うアドオンを作成しようとしています。

  1. popup.htmlにあるテキストエリアに文字列を入力(改行区切りで複数入力可)し、送信ボタンを押下
  2. popup.jsでボタン押下をキャッチし、フォームに入力された値を配列にしてcontent.jsに渡す
  3. content.jsでアクティブタブ内にあるテーブルの3列目を検索し、入力された文字列を一致するものを探す
  4. 検索終了後、結果をアラートで表示

各ファイルのコードは以下の通りです。

  • manifest.json

     {
       "name": "test",
       "version": "0.0.2",
       "manifest_version": 2,
       "description": "test",
       "icons": {
               "16": "img/icon_16.png"
             },
       "browser_action": {
         "default_icon": "img/icon_16.png",
         "default_title": "test",
         "default_popup" : "popup.html"  
       },
       "content_scripts": [
         {
           "matches": ["https://*/*"],
           "js": ["js/jquery-2.1.1.min.js", "js/content.js"],
           "run_at": "document_end"
         }
       ],
       "permissions": [
         "tabs"
       ]
     } 
    
  • popup.js

     $(document).ready(function() {
       chrome.tabs.query({active:true}, function(tab) {
         $('#do_action').click(function(e) {
           e.preventDefault();
    
           var list = "";
    
           list = $("[name='list']").val();
           if(list == ""){
             alert("文字をテキストエリアに入れてください。");
             return false;
           }
    
           var list_array = list.split("\n");
    
           chrome.tabs.sendMessage(tab[0].id, {list: list_array}, function(response){
             alert(response.result);
           });
         });
       });
     });
    
  • content.js

     chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
       var hit_datas = [];
       var send_mes = "";
       $.each(request.list, function() {
         var search_value = this;
         $('tr').each(function(){
           if($('td',this).eq(2).text() == search_value){
               hit_datas.push(search_value + "が見つかりました。");
             }
           }
         });
       });
    
       if(hit_datas.length != 0){
         send_mes = hit_datas.join("\n");
       }else{
         send_mes = "一致する情報は有りませんでした。";
       }
       sendResponse({result: send_mes});
     });
    

popup.htmlにはdo_actionというidを振ったボタンと、listという名前を付けたテキストエリア、そしてpopup.jsを読み込む記述が書いてあります。

上記の内容で実行すると、popup.jsの『alert(response.result);』の部分で
extensions::uncaught_exception_handler:8 Error in event handler for (unknown): TypeError: Cannot read property 'result' of undefined
というエラーが発生してしまいます。

色々調べてみたのですが、自力で解決できませんでした。
どうかよろしくお願いいたします。