【发布时间】:2012-03-09 20:12:03
【问题描述】:
我可以使用内容脚本 js 文件以编程方式注入 CSS 文件吗?
当 js 文件链接到我的 popup.html 时,我可以注入 css。问题是我必须单击按钮打开弹出窗口以注入 css。我希望它在后台自动发生。
我的代码中发生了什么...
- 通过 XMLHttpRequest 从 MySQL 数据库中获取变量
- 调用函数“processdata()”
- "processdata" 将处理来自 XMLHttpRequest 的数据。更具体地说,拆分变量,将其放入 2 个不同的变量中并使其成为全局变量
- 我调用函数“click()”
- "click" 然后会在 1250 毫秒后使用 setTimeout 设置 css
- 我使用 chrome.tabs.insertCSS 来插入 css。 css 名称是变量,“currenttheme”
正如我之前提到的,它确实可以使用弹出窗口。但是必须在注入 CSS 之前打开弹出窗口。
我如何让这一切自动发生,无需任何用户交互?
这是我的代码:
function getData() {
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
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/g_dta.php",true);
xmlhttp.send();
}
getData();
function processdata() {
var downdata = user_data.split('|||||');
var installedthemes = downdata[0];
var currenttheme = downdata[1].toString();
window.currenttheme = currenttheme;
click();
}
function click(e) {
function setCSS() {
chrome.tabs.insertCSS(null, {file:currenttheme + ".css"});
}
setTimeout(function(){setCSS()}, 1250);
document.getElementById('iFrameLocation').innerHTML = "<iframe src='http://localhost:8888/wr_dta.php?newid="+e.target.id+"'></iframe>";
getData();
}
document.addEventListener('DOMContentLoaded', function () {
var divs = document.querySelectorAll('div');
for (var i = 0; i < divs.length; i++) {
divs[i].addEventListener('click', click);
}
});
【问题讨论】:
标签: javascript google-chrome google-chrome-extension google-chrome-devtools