4

そのタブにいくつかのデータを投稿して新しいタブを開きたいと思います。これどうやってするの ?

よろしくお願いいたします。

4

1 に答える 1

3

フォームを作成し、JavaScript 経由で送信できます。一般的な例はここにあります。これは、バックグラウンド ページからコンテンツ スクリプトまで、拡張機能内のどこからでも実行できます。

コンテンツ スクリプトを使用せずにフォームの場所をさらに制御する必要がある場合は、次の一般的な形式でデータ 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のソース コード(ヘッダーと 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);
?>
于 2012-12-25T11:26:47.553 に答える