Я пишу простое расширение для Chrome, которое будет нажимать кнопку на внутреннем веб-сайте моей компании.В частности, веб-сайт содержит кнопку «Показать больше», которая при нажатии будет отображать больше данных.
Моя проблема заключается в том, что при выполнении Javascript, необходимого для нажатия кнопки в консоли Chrome, все работает.Однако, когда я выполняю его из скрипта content.js расширения, кнопка не нажимается.
Это мой manifest.json:
{
"manifest_version": 2,
"name": "asd",
"description": "qwe",
"version": "0.1",
"author": "abc",
"browser_action": {
"default_icon": "asd.png",
"default_title": "Have a good day",
"default_title": "asd"
},
"permissions": ["activeTab", "https://ajax.googleapis.com/"],
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["content.js"],
"run_at": "document_end",
"all_frames": true
}
]
}
content.js выглядит так:
window.addEventListener('load', function(event) {
console.log("page load!");
console.log(window.location.href);
console.log()
var pageURL = window.location.href;
if (pageURL.indexOf('example.com')) {
console.log('example.com');
var metaTags = document.querySelectorAll('meta');
for (var i = 0; i < metaTags.length; i++) {
console.log(metaTags[i].getAttribute('content'));
if (metaTags[i].getAttribute('name') === 'application-name' && metaTags[i].getAttribute('content') === 'XYZ') {
console.log('got match');
var buttonClass = document.getElementsByClassName('source-viewer-more-code');
console.log('buttonClass = ' + JSON.stringify(buttonClass));
var button = buttonClass[0];
console.log("button = " + button);
}
}
}
});
Я вижу все console.log
отпечатки, однако JSON.stringify(buttonClass)
печатает пустой объект и console.log("buttonw = " + button);
печатает неопределенный.
В настоящее время я запускаю расширение локально.Это проблема с разрешениями Chrome или что-то еще?