O código JQuery na extensão Chrome não funciona

Eu estou tentando fazer uma extensão de cromo com uma linha de código jquery mas não funciona. O console do cromo não mostra nenhum erro e quando eu coloco apenas o código jquery no console funciona bem.

Eu tenho esses códigos aqui. content.js

$(document).ready(function(){ $('.like_post:contains(Like)').click();}); 

background.js

  chrome.windows.getCurrent( function(currentWindow) { chrome.tabs.query({active: true, windowId: currentWindow.id}, function(activeTabs){ chrome.tabs.executeScript( activeTabs[0].id, {file: 'jquery-2.1.3.min.js', allFrames: true} ); chrome.tabs.executeScript( activeTabs[0].id, {file: 'content.js', allFrames: true} ); }); console.log(currentWindow.id); }); 

manifest.json

  { "name": "plugin name", "version": "0", "description": "What do I do as an extension", "manifest_version": 2, "browser_action": { "name": "project with jquery", "icons": ["icon.png"], "default_icon": "icon.png" }, "content_scripts": [ { "js": [ "jquery-2.1.3.min.js", "background.js", "content.js" ], "matches": [ "http://*/*", "https://*/*"] }] } 

Eu também baixei o arquivo jquery-2.1.3.min.js e o tenho na pasta de extensão.

Alguém pode ver por que isso não funciona?

Obrigado pelo seu tempo lendo isso.

A causa raiz do problema é que os scripts de conteúdo de extensão são executados em um mundo isolado . Uma das razões para isso é que seu código não entra em conflito com o código da página: por exemplo, você pode usar uma versão diferente do jQuery.

Portanto, seu script de conteúdo tem sua própria cópia do jQuery. A forma como o .click() do jQuery funciona é mantendo uma lista de manipuladores de events que são acionados pelo clique.

..e você pode ver o problema já. A cópia do script de conteúdo do jQuery não está ciente da lista de cópias de manipuladores da página e não pode ativá-las .

Isso, por sinal, explica por que ele funciona quando você o coloca no console – por padrão, o console é executado no contexto da página e aciona a cópia da página do jQuery.

Existem maneiras de superar isso, mas o mais simples para sua tarefa é emitir um evento DOM apropriado , que será capturado pelo código da página. Veja esta questão para um exemplo.