Domanda

Sono occupato a sviluppare un'estensione di firefox.Sto usando il costruttore aggiuntivo

Cosa farà:

    .
  1. Ottieni un ID da una pagina PHP (XMLHTTPRequest)

  2. Chiama un'altra funzione e invia quell'ID con IT

  3. Quella funzione inserisce CSS con un tag Link creato da JavaScript

    Il mio problema:

    Non funzionerà.Se avviso la variabile corrente, non succede nulla.Quindi XMLHTTPREQUEST non sembra funzionare.

    Il mio codice:

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

    s.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();
    
    .

    P.S.Il file CSS è nella cartella dati.

È stato utile?

Soluzione

Gli script del contenuto vengono eseguiti con i privilegi della pagina che sono in. Quindi se la pagina non è consentita per caricare http://localhost/, lo script di contenuti non sarà in grado di farlo.Non si ottiene un errore immediato a causa di Cors Ma la richiesta fallirà comunque.Ciò che devi fare è inviare un messaggio a main.js in modo che la richiesta (codice di interno è possibile richiedere qualsiasi URI) e invia i dati allo script del contenuto.

Altri suggerimenti

sono molto nuovo a questo quindi non sicuro se posso aiutare.Hai dato un'occhiata nella console di errore (Ctrl + Shift + J) se si lamenta di qualsiasi cosa?Puoi console.log () e verrà visualizzato qui.

magari usa il Richiesta lib al posto di xmlhttprequest

Ecco uno snippet dal mio codice:

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

}
.

Come detto, lo script del contenuto ha lo stesso privilegiato della pagina web in cui è allegato, questo significa che sei sotto il Stessa politica di origine .

È possibile risolvere il problema come suggerito, ha inviato un messaggio al codice aggiuntivo (che non è limitato dal SOP) e pubblica il risultato nello script del contenuto.

Qui un esempio come il codice potrebbe essere: https://groups.google.com/d/topic/mozilla-labs-jetpack/vwkzxd_ma7c/discussion

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top