0

我正在忙于开发铬扩展。我的Chrome扩展注入css不会工作

它的作用:

  1. 获得从PHP页面(XMLHttpRequest的)数据

  2. 分割使用.split

  3. 当有人点击一个div结果变量,它会调用一个函数来插入一个名称为1的css文件。

我的问题:

好吧,当我点击那个按钮时没有任何反应。它在我使用变量“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

对您的问题更好的标题可能会帮助您获得更多回复。 – itsmequinn 2012-02-17 17:51:35

+5

现在*//代码为IE6,IE5 * *真的*防扩散镀铬扩展 – 2012-02-17 17:52:54

回答

0

window.user_data = USER_DATA; // < - 不是必需的。 user_data = xmlhttp.responseText意味着user_data对这个窗口是全局的。 window.currenttheme = currenttheme.toString(); < < - 不需要太

也downdata [1]是一个字符串,因此更换

currenttheme = downdata[1].toString(); 

currenttheme = downdata[1]; 

如果这没有帮助,尝试警报(currenttheme);并查看您是否获得了所需的主题名称,因为有时PHP可能会抛出错误并死亡,这可能不会产生“|||||”。检查php输出并提醒xmlhttp.responseText以查看是否一切正常。

+0

我没有提醒它。有或没有额外的代码,它警告正确,但不会工作。 – 2012-02-17 18:23:13

+0

好的,快速备份php文件并在PHP文件中,只需添加以下内容: “||||| 001”<< - 这必须是php文件中唯一的东西。 。将文件保存为php文件并再次运行该页面并检查它是否可用。如果这些脚本包含在单独的.js文件中,也是CLEAR CACHE。 – Akshay 2012-02-17 18:30:28

+0

同时尝试使用文件:(currenttheme +“.css”) – Akshay 2012-02-17 18:34:08