我正忙于开发 Firefox 扩展。我正在使用附加构建器

它将做什么:

  1. 从 PHP 页面获取 ID (XMLHttpRequest)

  2. 调用另一个函数并发送该 ID

  3. 该函数插入带有由 javascript 创建的链接标签的 CSS

我的问题:

这是行不通的。如果我警告当前主题变量,则什么也不会发生。所以 XMLHttpRequest 似乎不起作用。

我的代码:

main.js:

var Widget = require("widget").Widget;
var tabs = require('tabs');
exports.main = function() {
var pageMod = require("page-mod");
var data = require("self").data;
scriptFiles = data.url("s.js");
pageMod.PageMod({
include: "*.facebook.com",
contentScriptWhen: 'ready',
contentScriptFile: scriptFiles
});

js

function addCSS(theTheme) {
var s = document.createElement('link');
s.type = 'text/css';
s.rel = 'stylesheet';
s.href = theTheme+'.css';
(document.head||document.documentElement).appendChild(s);
}

function getData() {
                client = new XMLHttpRequest();
                try{
                    client.open('GET','http://localhost:8888/istyla/login/popuplogin/myaccount.php');                   
                } catch (e){
                alert( "error while opening " + e.message );
            }

            client.onreadystatechange = function(){
                if (client.readyState ==4){
                        user_data = client.responseText;
                        window.user_data = user_data;
                        var currenttheme = user_data;
                        window.currenttheme = currenttheme;
                        addCSS(currenttheme);
                }
            }

            client.send(null);
}

getData();

附:CSS 文件位于 data 文件夹中。

有帮助吗?

解决方案

内容脚本以其所在页面的权限运行。所以如果页面不允许加载 http://localhost/, ,您的内容脚本也将无法做到这一点。由于以下原因,您不会立即收到错误 跨域资源共享 但请求仍然会失败。您需要做的就是发送消息至 main.js 这样它就会执行请求(允许扩展代码请求任何 URI)并将数据发送回内容脚本。

其他提示

我非常新的,所以我不确定我是否可以提供帮助。如果您在抱怨任何内容的情况下,您是否介绍了错误控制台(Ctrl + Shift + J)?您可以控制台(),它将在此显示。

也许使用请求 lib而不是xmlhttproquest

这是我的代码中的片段:

var Request = require("request").Request;

getUserDetails : function(userID, callback)
{
   Request({
      url: Proxy.remoteUrl,
      content : {command:'getUser',UserID:userID},
      onComplete: function(response) {callback(response.json)}
   }).get();

}
.

如上所述,内容脚本具有与附加的网页相同的特权,即您在相同的源策略

您可以根据建议解决问题,因此向附加代码发送了一条消息(不受SOP限制)并将结果返回到内容脚本。

这里的一个示例代码可以是: https://groups.google.com/d/topic/mozilla-labs-jetpack/vwkzxd_ma7c/discussion

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top