Chrome扩展,通过php传递大变量到其他Windows


Chrome Extensions, Passing Large Variables to Other Windows via php

我目前正在编写一个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应用程序的一部分,它工作。