Задать вопрос
Joannes
@Joannes
html, css, js, angular, bootstrap

Почему не меняется setBadgeText при условии if?

Всем привет.
Пишу маленькое расширение.
Появилась необходимость поменять текст возле иконки (setBadgeText ) при условии что есть элемент с классом .red_nor

Собственно че я тут натварил.
Вот мой объект манифест
{
  "manifest_version": 2,

  "name": "MyApp",
  "version": "1.0",
  "description": "Description text", 
  "background_page": "background.html",
  "browser_action": {
    "name": "Manipulate DOM",

	"default_icon": {                   
	  "38": "lock-icon.png",         
	  "19": "icon.png"           

	}

  },
  "background": {
	"scripts": ["background.js", "jquery.min.js"]
  },


  "content_scripts": [ {
    "js": [ "jquery.min.js", "background.js" ],
    "matches": [ "http://*/*", "https://*/*"]
  }]
}


вот мой background.js

var succlass = ".red_nor";
if ($(succlass)) {
    console.log("true");
    chrome.browserAction.setBadgeText({text: "yeah"});
} else {
    console.log("false");
}


Консоль кричит
background.js:56 Uncaught TypeError: Cannot read property 'setBadgeText' of undefined

Собственно то и понятно, я пытаюсь изменить элемент браузера в скрипте которые работает с элементами контента.
Так как же тогда правильно менять элемент browserAction при условии элементов контента?
  • Вопрос задан
  • 330 просмотров
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Нужно проверять так: $(succlass).length.
Даже если не будет найдено ни одного объекта, вернётся jquery-объект, который всегда true.
Ответ написан
@darkwoolf10
странный
Я точно не знаю, но если у тебя Jquery, то в background.js в if нужно написать $("succlass"), а не просто $(succlass)
Ответ написан
Joannes
@Joannes Автор вопроса
html, css, js, angular, bootstrap
В общем вроде как разобрался. Дело в том что при написании приложения существует некая иерархия, т.е. есть отдельный скрипт который работает с элементами браузера, а есть который работает с контентной частью сайта.

Соответсвенно это browser_action и content_scripts

Теперь возникает вопрос. Как же вытащить значение value в форме контента и вставить это значение в url скрипта который обрабатывает элемента браузера т.е. у меня такой код
xhr = new XMLHttpRequest();
    xhr.open("GET", "http://example.ru/1466088862.4504/", true);
    xhr.send(null);
    xhr.onreadystatechange = function() {

надо что бы вместо ссылки (1466088862.4504/) была переменная, а значение переменной это и есть значение того value которое мы вытащили в контенте?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы