【问题标题】:Open tab with post data to that tab in chrome extensions在 chrome 扩展中打开标签,将数据发布到该标签
【发布时间】:2012-12-25 10:06:58
【问题描述】:

我想打开一个新标签,将一些数据发布到该标签。我该怎么做?

提前感谢您的帮助。

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    您可以创建一个表单,然后通过 JavaScript 提交它。可以在here 找到一个通用示例。这可以在您的扩展程序中的任何地方完成,从背景页面到内容脚本。

    如果您需要在没有内容脚本的情况下更好地控制表单的位置,您可以使用具有以下通用格式的数据 URL:

    data:text/html;charset=utf8,<form></form><script>document.forms[0].submit();</script>
    

    或者,以编程方式:

    var url = 'data:text/html;charset=utf8,';
    function append(key, value) {
        var input = document.createElement('textarea');
        input.setAttribute('name', key);
        input.textContent = value;
        form.appendChild(input);
    }
    var form = document.createElement('form');
    form.method = 'POST';
    form.action = 'http://rob.lekensteyn.nl/dump.php';
    append('q', 'query');
    url += encodeURIComponent(form.outerHTML);
    url += encodeURIComponent('<script>document.forms[0].submit();</script>');
    // A general method
    window.open(url);
    // Or, use chrome extension-specific method which offers more control
    // chrome.tabs.create({url: url, active: true});
    

    PS。 http://rob.lekensteyn.nl/dump.php的源码(用于显示headers和POST数据):

    <?php
    header('Content-Type: text/plain');
    foreach ($_SERVER as $header => $value) {
        if (strpos($header, 'HTTP_') === 0) {
            echo str_pad(substr($header, 5), 20) . " " . $value . "\n";
        }
    }
    echo "\n\n";
    $input = fopen('php://input', 'rb');
    while (!feof($input)) {
        echo fread($input, 102400);
    }
    fclose($input);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2015-05-17
      • 1970-01-01
      • 2011-06-26
      • 2012-03-23
      • 1970-01-01
      • 2016-06-19
      • 2017-11-14
      • 1970-01-01
      相关资源
      最近更新 更多