我目前正在编写一个Chrome扩展,需要用户选择的数据,并将其传递到另一个窗口。除了舱单。json文件,我有一个背景。js和index.php文件。
background.js文件成功获取用户选择的数据,打开一个新的浏览器窗口,然后通过$_GET将用户选择的数据传递给位于服务器上的index.php文件。这工作很好,直到你超过了一定的字符限制,在这种情况下,你会得到一个错误,说url太长。我想知道是否有任何方式将数据从后台。js文件发送到新窗口使用$_POST或任何其他方法,将允许更大的数据选择?或者我可以先将用户选择的数据传递给新窗口,然后让该窗口访问服务器?
background.js
function getClickHandler() {
return function(info, tab) {
var tx = info.selectionText;
tx = encodeURIComponent(tx);
// Create a new window to the info page.
var url = 'http://192.168.0.22?tx=' + tx;
chrome.windows.create({url: url, width: 500, height: 760 });
};
};
chrome.contextMenus.create({
"title" : "Store",
"type" : "normal",
"contexts" : ["selection"],
"onclick" : getClickHandler()
});
index . php
<?php
$text = $_GET['tx'];
print ($text);
?>
可能你可以动态创建一个表单,然后设置一个输入值,你试图发送一个查询字符串参数。
类似:
var $form = $('<form action="' + url + '" method="POST" target="_blank" />'),
$input = $('<input name="tx" type="text" />').val(tx);
$form.append($input).trigger("submit");
如果不运行代码,我不确定submit
是否会在不将表单添加到DOM的情况下起作用,如果不是,那么你需要将表单附加到DOM,然后触发submit
,之后你可能想要从DOM中删除表单。
我说可能,因为我不熟悉编写Chrome扩展,但我做过这作为一个正常的web应用程序的一部分,它工作。