使用Chrome扩展程序的post方法发送文本

时间:2014-05-15 15:38:14

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

发送带有Chrome扩展程序的大文

我正在尝试使用我的Chrome扩展程序将存储在本地存储中的大文本发送到网站。我见过这个answer 并使用此代码

function ls(){return localStorage['txt'];}
function fakePost() {   
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "http://cvsguimaraes.altervista.org/fiddles/postcheck.php");
var params = {action: ls()};
for(var key in params) {
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");
    hiddenField.setAttribute("name", key);
    hiddenField.setAttribute("value", params[key]);
    form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
};
fakePostCode = fakePost.toString().replace(/(\n|\t)/gm,'');

chrome.browserAction.onClicked.addListener(function (t) {
chrome.tabs.create({"url" : "javascript:"+fakePostCode+"; fakePost();"});
});

但未定义ls。我该如何发送此文字?而且我没有使用XmlHTTP,因为我需要在新标签页中打开它

1 个答案:

答案 0 :(得分:2)

基本上,答案是您不能使用所描述的方法。您的大数据不适合网址,而您通过网址注入的代码根本无法与扩展程序代码交互。

您需要一种替代解决方案,但幸运的是它应该很容易。您可以在扩展程序中包含一个html文件,该文件将发布数据,然后打开该页面。该HTML文件是您的扩展程序的一部分,可以访问其localStorage

修改:我已创建了一般解决方案,请参阅this answer

沿着这些方向:

post.html:

<html>
    <head>
    </head>
    <body>
        <script src="post.js"></script>
    </body>
</html>

post.js:

var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "http://cvsguimaraes.altervista.org/fiddles/postcheck.php");
var params = {action: localStorage['txt'];};
for(var key in params) {
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");
    hiddenField.setAttribute("name", key);
    hiddenField.setAttribute("value", params[key]);
    form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();

background.js:

chrome.browserAction.onClicked.addListener(function (t) {
    chrome.tabs.create({"url" : chrome.runtime.getURL("post.html")});
});