【问题标题】:Chrome Extensions, Passing Large Variables to Other Windows via phpChrome 扩展,通过 php 将大变量传递给其他 Windows
【发布时间】:2014-06-06 19:29:39
【问题描述】:

我目前正在编写一个 Chrome 扩展程序,它获取用户选择的数据并将其传递到另一个窗口。除了 manifest.json 文件,我还有一个 background.js 和 index.php 文件。

background.js 文件成功抓取用户选择的数据,打开一个新的浏览器窗口,然后通过 $_GET 将用户选择的数据传递给位于服务器上的 index.php 文件。这很有效,直到您超过某个字符限制,在这种情况下,您会收到一条错误消息,指出 url 太长。我想知道是否可以使用 $_POST 或任何其他允许更大数据选择的方法将数据从 background.js 文件发送到新窗口?还是我可以先将用户选择的数据传递给新窗口,然后让该窗口访问服务器?

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);

?>

【问题讨论】:

  • 也许用textarea 创建一个表单,填充textarea,然后将表单提交到新窗口?我说maybe 因为我没有使用 Chrome 扩展程序的经验...
  • 这是个好主意。问题是我的java真的很有限,我不知道该怎么做。

标签: javascript php jquery html google-chrome


【解决方案1】:

您可能会动态创建一个表单,然后将输入设置为您尝试作为查询字符串参数发送的值。

类似:

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 扩展程序,但我之前已经将其作为普通网络应用程序的一部分完成了,并且它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多