Мое расширение Chrome для ввода CSS не будет работать - PullRequest
0 голосов
/ 17 февраля 2012

Я занят разработкой расширения Chrome.

Что он будет делать:

  1. Получение данных со страницы PHP (XMLHttpRequest)

  2. Разделить результирующую переменную, используя .split

  3. И когда кто-то нажимает на div, он вызывает функцию для вставки файла CSS с тем именем, которое я получил в числе 1.

Моя проблема:

Что ж, когда я нажимаю эту кнопку, ничего не происходит.Это работает, когда я использовал переменную "newvar" вместо переменной "currenttheme" из XMLHttpRequest.Я также попытался преобразовать его в строку, используя .toString.О, предупреждение переменной работает и дает точно такой же ответ, как newvar.

Мой код: (Вздох!)

//My XMLHttpRequest
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    user_data = xmlhttp.responseText;
    window.user_data = user_data;
    processdata();
    }
  }
xmlhttp.open("GET","http://localhost:8888/myphppage.php",true);
xmlhttp.send();

function processdata() {
//split result variable from PHP
var downdata = user_data.split('|||||');
var installedthemes = downdata[0];
currenttheme = downdata[1].toString();
window.currenttheme = currenttheme.toString();
}

function click(e) {
  newvar = "001";
  //insert css - works with variable newvar but not with this one
  chrome.tabs.insertCSS(null,
  {file:currenttheme + ".css"});
  //alerting the variable works, exactly the same as newvar
  alert (currenttheme);
}

document.addEventListener('DOMContentLoaded', function () {
   var divs = document.querySelectorAll('div');
  for (var i = 0; i < divs.length; i++) {
    divs[i].addEventListener('click', click);
  }
});

1 Ответ

0 голосов
/ 17 февраля 2012

window.user_data = user_data; // <- не требуется. user_data = xmlhttp.responseText подразумевает, что user_data является глобальным для этого окна. window.currenttheme = currenttheme.toString (); << - тоже не требуется </p>

также downdata [1] является строкой, поэтому замените

currenttheme = downdata[1].toString();

с

currenttheme = downdata[1];

Если это не поможет, попробуйте оповещение (текущая тема); и посмотрите, получаете ли вы нужное имя темы, потому что иногда PHP может выдавать ошибки и умирать, что может не дать «|||||» Проверьте вывод php и предупредите xmlhttp.responseText, чтобы увидеть, все ли в порядке.

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