2016-07-12 9 views
1

Ich möchte eine Google Chrome-Erweiterung erstellen, um Daten von einem Popup-Formular an den localhost-Server zu senden. Ich habe unter den Dateien erstellt. Alles funktioniert gut, aber die Daten werden nicht an den localhost-Server gesendet. könnte mir bitte jemand helfen, wo ist mein fehler? danke.create chrome extension zum Senden von Daten an localhost Server

manifest.json

{ 
    "manifest_version": 2, 

    "name": "server Plug-ins", 
    "description": "Send data to database", 
    "version": "1.0", 

    "icons": { 
    "48": "icon.png" 
    }, 

    "permissions": [ 
     "history", 
     "browsingData", 
     "tabs", 
     "<all_urls>", 
     "http://192.168.1.222/*", 
     "storage" 
    ], 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html", 
    "default_title": "Send data to server!" 
    } 

} 

alert.js

document.write(" i am here . . ."); 

// Create our XMLHttpRequest object 
var hr = new XMLHttpRequest(); 
// Create some variables we need to send to our PHP file 
var url = "http://192.168.1.222/my_parse_file.php"; 
var fn = document.getElementById("name").value; 
var ln = document.getElementById("details").value; 
var vars = "name="+fn+"&details="+ln; 
hr.open("POST", url, true); 
// Set content type header information for sending url encoded variables in the request 
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
// Send the data to PHP now... and wait for response to update the status div 
hr.send(vars); // Actually execute the request 

popup.html

<body> 
    <label for="">Name</label><br><input type="text" id="name"> <br> 
    <label for="">Details</label><textarea id="details"></textarea> 
    <input id="clickme" name="myBtn" type="submit" value="click me"> 
    <script type="text/javascript" src="popup.js"></script> 
</body> 

popup.js

function hello() { 
    chrome.tabs.executeScript({ 
    file: 'alert.js'  
    }); 
} 
document.getElementById('clickme').addEventListener('click', hello); 

Antwort

-1

denke ich, dass das Problem, dass Ihr Popup input Elemente im Zusammenhang waren die alert.js Skript kann nicht ausgeführt wird zugegriffen wird.

Im Kontext alert.js bezieht sich document auf das Dokument der Registerkarte, in die Sie das Skript injizieren.

Sie können etwas tun, um es den Inhalt Ihrer popup.js mit dieser Datei funktioniert, ersetzen:

function hello() { 
    function contentScript(fn, ln){ 
     document.write(" i am here . . ."); 
     var hr = new XMLHttpRequest(); 
     var url = "http://192.168.1.222/my_parse_file.php"; 
     var vars = "name="+fn+"&details="+ln; 
     hr.open("POST", url, true); 
     hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     hr.send(vars); 
    } 

    var fn = document.getElementById("name").value; 
    var ln = document.getElementById("details").value; 

    chrome.tabs.executeScript({ 
     code: (contentScript.toString() + "\ncontentScript('" + fn + "', '" + ln + "');") 
    }); 
} 
document.getElementById('clickme').addEventListener('click', hello); 

Sie können Ihre alert.js Datei entfernen, weil jetzt, wird die Erweiterung direkt JavaScript-Code einzuspeisen anstatt eine Datei zu injizieren.

+0

ich habe das hinzugefügt. funktioniert immer noch nicht. Ich kann mein Problem nicht herausfinden. Eigentlich bin ich völlig neu in der Entwicklung von Erweiterungen. @Titus – kazinayem2011

+0

@KaziNayem sollten Sie einen Blick auf die Hintergrundseite der Erweiterung werfen, um zu sehen, ob es irgendwelche Fehler gibt, [HIER] (http://stackoverflow.com/questions/10257301/where-to-read-console-messages-from -background-js-in-a-chrome-extension) Sie können herausfinden, wie man das macht – Titus

+0

ich verstehe, aber hier gibt ein Fehler in ** popup.js ** wie folgt: ** Uncaught TypeError: Kann Eigenschaft nicht lesen ' addEventListener 'von null ** @Titus – kazinayem2011

Verwandte Themen