Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome Extension : content script on facebook

I am creating a chrome extension for facebook. I need to execute the same content script on every page. It works well during the first load but it doesn't work when I go to a facebook page thanks to a link (as the profile name). I read this was because not the entire page was loaded except the first time. So the script is not executed again. However I have no idea how to solve this problem.

Here is my manifest.json :

{
    "name" : "name",
    "version" : "1.0",
    "manifest_version":1,
    "description" : " description ",
    "content_scripts" : [
            {
              "matches" : ["http://www.facebook.com/*"],
              "js" : ["test.js"]
            }   
    ] ,
    "all_frames":"true"  
}

I hope someone will have the answer because I really need the script (test.js, which doesn't change the html or the css) to be executed on every page every time!

Thanks for your future answers.

like image 773
user1554442 Avatar asked May 29 '26 11:05

user1554442


1 Answers

I personally solved this by using Chrome's webRequest API. You'll want to add a listener that tracks AJAX-generated HTTP calls. Here's essentially the code I used:

chrome.webRequest.onCompleted.addListener(function(details) {
    var url = document.createElement('a');
    url.href = details.url;
    if (url.search && url.search.indexOf('ajaxpipe=1') !== -1) {
        console.log('New page via AJAX.');
        chrome.tabs.executeScript({'file' : 'test.js'});
    }
}, {urls : ["*://*.facebook.com/*"]});
like image 57
Max Scheiber Avatar answered Jun 01 '26 23:06

Max Scheiber