【问题标题】:My chrome extension to inject css wont work我用于注入 css 的 chrome 扩展不起作用
【发布时间】:2012-03-09 03:10:16
【问题描述】:

我正忙着开发一个 chrome 扩展。

它将做什么:

  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);
  }
});

【问题讨论】:

  • 更好的问题标题可能会帮助您获得更多回复。
  • 现在//IE6、IE5的代码真的 chrome扩展的防御性编程

标签: javascript google-chrome google-chrome-extension javascript-framework


【解决方案1】:

window.user_data = user_data;//

也 downdata[1] 是一个字符串所以替换

currenttheme = downdata[1].toString();

currenttheme = downdata[1];

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

【讨论】:

  • 我确实提醒过它。无论有没有额外的代码,它都会正确发出警报,但不会工作。
  • 好的,赶紧把php文件备份一下,在php文件中添加以下内容:"|||||001"
  • 也试试 file:(currenttheme + ".css")
  • 只使用“|||||001”效果很好!这是为什么?哦,添加 ( 和 ) 没有帮助。谢谢!
  • 我解决了!结束 php 标记下面有额外的代码行,导致第二行。没有你是不可能做到的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2012-02-25
  • 1970-01-01
  • 2013-12-24
  • 2017-05-26
相关资源
最近更新 更多