2016-03-24 16 views
0

ユーザーが自分のデータベースに格納されているURLにアクセスすると、DIV containsメッセージを作成します。実際には、警告メッセージで動作しますが、DIVが必要なので、contentscript.jsでページのDOMにアクセスして作業する必要がありますが、contentscript.jsの機能が動作しないようにするにはどうすればいいですか? background.jsのURLをチェックしました!Chrome拡張機能:background.jsのcontentscript.jsの関数を呼び出す

私はタブについて読んでいますが、ユーザーがブラウザのアクションアイコンをクリックしたときにのみ実行されます。私の状況では、ユーザーはwwwでブラウズしているアイコンをクリックしませんでした。

contentscript.js

chrome.runtime.sendMessage(window.location.href); 
var pathname = window.location.pathname; // Returns path only 
var url  = window.location.href; 
//document.getElementsByTagName('title')[0].innerText 

function MessageBox(){ 
    document.documentElement.style.height = '100%'; 
    document.body.style.height = '100%'; 
    document.documentElement.style.width = '100%'; 
    document.body.style.width = '100%'; 

    var div = document.createElement('div'); 
    var btnForm = document.createElement('form'); 
    var btn = document.createElement('input'); 

    //append all elements 
    document.body.appendChild(div); 
    div.appendChild(btnForm); 
    btnForm.appendChild(btn); 
    //set attributes for div 
    div.id = 'myDivId'; 
    div.style.position = 'fixed'; 
    div.style.top = '80%'; 
    div.style.left = '77%'; 
    div.style.width = '22%'; 
    div.style.height = '17%'; 
    div.style.backgroundColor = 'white'; 
    div.style.border='1px solid red'; 

    //set attributes for btnForm 
    btnForm.action = ''; 

    //set attributes for btn 
    //"btn.removeAttribute('style'); 
    btn.type = 'button'; 
    btn.value = 'X'; 
    btn.style.position = 'reltive'; 
    btn.style.top = '10%'; 
    btn.style.left = '80%'; 
    btn.style.width = '5%'; 
    btn.style.height = '3%'; 
} 

background.js

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse) { 

    $.ajax({ 
     type: 'GET', 
     url: 'http://mywebsite.com/api/route', 
     dataType: 'json', 
    }).success(function(results) { 
     for (var i = 0; i < results.length; i++) { 
      if (results[i].url === response) { 
       alert("This page in my database"); // this work but I don't want an alert message 
      } //if 
     } //for 
    }); 
}); 

答えて

0

chrome.runtime.sendMessage非同期メソッドです。

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse) { 

    $.ajax({ 
     type: 'GET', 
     url: 'http://mywebsite.com/api/route', 
     dataType: 'json', 
    }).success(function(results) { 
     for (var i = 0; i < results.length; i++) { 
      if (results[i].url === response) { 
       sendResponse(true); 
       return; 
      } 
     } 

     sendResponse(false); 
    }); 

    return true; // tell chrome about runnning async job 
}); 

そして、あなたのコンテンツのスクリプトにこの

chrome.runtime.sendMessage(window.location.href, function(result) { 
    if (result) { 
     // Found 
     MessageBox(); 
    } 
}); 

約続きを読むん:あなたは、コールバックメソッドと背景のスクリプト呼び出しsendResponse、あなたのバックグラウンドスクリプトでは、あなたの仕事

を終了して、それを渡すことができますメッセージをここをクリックhttps://developer.chrome.com/extensions/messaging

+0

ありがとうございました – Seham

関連する問題