2015-04-28 3 views
0

У моего расширения Chrome есть Content-Script, который вводит пользовательский DIV на текущую страницу. Эта часть работает.Background.js Не находит контент с текстом контента

Но при этом расширение также имеет контекстное меню с контекстным контекстом, которое при щелчке должно каким-то образом изменить этот введенный DIV (скажем, добавить текст в этот DIV). Проблема заключается в том, что введенный контент не найден. Обработчик контекстного меню находится в Background.js, и этот файл ничего не знает о содержимом.

manifest.js

"content_scripts": [ 
    { 
     "matches": [ 
      "http://*/*", 
      "https://*/*" 
     ], 
     "css": ["contentstyle.css"], 
    "js": ["jquery-1.11.2.min.js", "contentscript.js"], 

"background": { 
    "persistent": true, 
    "scripts": ["background.js"] 
},  

contentscript.js

// Add Custom DIV - works OK 
var div = document.createElement('div'); 
div.id = 'infoDiv'; 
document.body.appendChild(div); 
document.getElementById('infoDiv').innerHTML = 'TEST'; 

background.js

// Add menu - gets added, but can't see Injected Content from here 
chrome.contextMenus.create({ 
    "title": "My Right-Click Menu", 
    "contexts": ["image"], 
    "onclick" : changeDiv 
    }); 

function changeDiv(e) 
{ 
    var divHTML = document.getElementById('infoDiv').innerHTML; 
    alert('Current HTML in DIV: ' + divHTML); 
} 

Я не могу чтобы получить divHTML из фонового скрипта, есть какая-то ошибка и нет окна предупреждения. Может ли быть связь между Фон и Контентом? Я вынужден реализовать меню в фоновом скрипте, верно?

ответ

2

Неправильный document в

var divHTML = document.getElementById('infoDiv').innerHTML; 

Пожалуйста, прочтите Architecture Overview первым. Ваш фоновый скрипт выполняется в отдельном документе HTML и, таким образом, не будет «видеть» страницу на вкладке.

Вам нужно передать значение сценарию содержимого, чтобы что-то сделать с видимой страницей. Вам, вероятно, понадобится Messaging.

Смежные вопросы