Как создать DOM во время выполнения в расширении Chrome - PullRequest
1 голос
/ 11 августа 2011

Я тестирую расширение Chrome, в котором я создаю div на открытой вкладке во время выполнения и применяю к нему некоторые CSS.Когда я тестирую его в моей системе, он работает нормально, но когда я тестирую его в другой системе (той же версии Chrome), он работает на некоторых страницах, но не работает на других.

Мой код для создания div выглядит следующим образом:

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null, {file: "content_script.js"});
});

content_script.js:


//<LINK>
var link = document.createElement('link');
link.href = 'http://mydomain.com/getfeedback-dialog.css';
link.rel  = 'stylesheet';
link.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(link);

//OVERLAY
var getfeedback_overlay = document.createElement('div');
getfeedback_overlay.setAttribute('id', 'getfeedbackoverlay');
document.body.appendChild(getfeedback_overlay);

//DIALOG
var getfeedback_dialog = document.createElement('div');
getfeedback_dialog.setAttribute('id','getfeedbackdialog');

//CONTAINER
var getfeedback_container = document.createElement('div');
getfeedback_container.appendChild(getfeedback_dialog);

//<IMG>
getfeedback_dialog_image = document.createElement('img');
getfeedback_dialog_image.setAttribute('src','http://mydomain.com/icon.jpg');
getfeedback_dialog.appendChild(getfeedback_dialog_image);

//<A>
getfeedback_dialog_a = document.createElement('a');
getfeedback_dialog_a.setAttribute('href','http://mydomain.com');
getfeedback_dialog_a.setAttribute('id','textlogo');
getfeedback_dialog_a.setAttribute('target','_blank');
getfeedback_dialog_a.innerHTML = 'Extension by Me';
getfeedback_dialog.appendChild(getfeedback_dialog_a);

getfeedback_container.setAttribute('id','getfeedbackcontainer');
document.body.appendChild(getfeedback_container);

Я хочу использоватьтот же подход, что и у расширения «Стильный», которое изменяет CSS страницы при ее загрузке.Как им это удается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...