发送带有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,因为我需要在新标签页中打开它
答案 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")});
});