我想打开一个新标签,向该标签发布一些数据。我怎么能这样做?
提前感谢您的帮助。
答案 0 :(得分:3)
您可以创建表单,然后通过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(用于显示标题和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);
?>