我正忙着开发chrome扩展程序。
它会做什么:
从PHP页面获取数据(XMLHttpRequest)
使用.split
当有人点击div时,它会调用一个函数来插入一个css文件,该文件的名称是我在第1号中获得的。
我的问题:
单击该按钮时没有任何反应。当我使用变量“newvar”而不是XMLHttpRequest中的变量“currenttheme”时,它可以工作。我尝试使用.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);
}
});
答案 0 :(得分:0)
window.user_data = user_data; //&lt; - 不需要。 user_data = xmlhttp.responseText表示user_data对此窗口是全局的。 window.currenttheme = currenttheme.toString(); &lt;&lt; - 不需要
也是downdata [1]是一个字符串,所以替换
currenttheme = downdata[1].toString();
与
currenttheme = downdata[1];
如果这没有帮助,请尝试提醒(currenttheme);并查看您是否获得了所需的主题名称,因为有时PHP可能会抛出错误并死掉,这可能不会产生“|||||”。检查php输出并提醒xmlhttp.responseText以查看是否一切正常。