0

はではloadOneTab()利用できないためformData

  1. formData新しいタブに投稿するには どうすればよいですか?
  2. 上記の新しいタブの前景/背景ステータスはどのように設定できますか?

Using FormData Objectsのほんの一例:

var formData = new FormData();

formData.append("username", "Groucho");
formData.append("accountnum", 123456); // number 123456 is immediately converted to string "123456"

// HTML file input user's choice...
formData.append("userfile", fileInputElement.files[0]);

// JavaScript file-like object...
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var blob = new Blob([content], { type: "text/xml"});

formData.append("webmasterfile", blob);

var request = new XMLHttpRequest();
request.open("POST", "http://foo.com/submitform.php");
request.send(formData);

明確化:
通常の HTML フォームはtarget="_blank"、フォーム データを新しいタブに POST します。
同様に、前述のように、loadOneTab()データを新しいタブに POST することもできます。
XMLHttpRequest でそれを行うことは可能ですか?

4

2 に答える 2

1

これは、xhr の responseText をタブにロードし、貼り付けをスクラッチパッドにコピーできるという意味です。

var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        switch (xhr.readyState) {
                case 4:
                   prompt('done', xhr.responseText);
                    gBrowser.loadOneTab('data:text/html, ' + encodeURIComponent(xhr.responseText), {
                      inBackground: false
                    });
            break;
          default:
        }
    };
    xhr.open("GET", "https://www.bing.com/");
    xhr.send();
于 2014-07-30T17:40:28.813 に答える
1

XHR はタブとはまったく関係ありません。本当に XHR が必要な場合は、返されたソースを取得し、それを使用してターゲット タブのドキュメントを更新する必要があります。

それ以外の場合は、loadOneTab次のように使用します:

encodeFormData関数フォームのインポート: https://stackoverflow.com/a/25020668/3791822

// HTML file input user's choice...
var userfileNSIFILE = new FileUtils.File(fileInputElement.files[0].path);

// JavaScript file-like object...
var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file...
var blob = new Blob([content], { type: "text/xml"});

//some code here to write blob to temp folder to make nsifile or do some stream stuff to get an nisfileoutputstream?
var blobNSIFILE = ....;

let postData = encodeFormData({
  "webmasterfile": blobNSIFILE,
  "userfile": userfileNSIFILE,
  "username": "Groucho",
  "accountnum": 123456
}, "iso8859-1");

gBrowser.loadOneTab("http://foo.com/submitform.php", {
  inBackground: false,
  postData: postData
});
于 2014-07-30T17:11:54.737 に答える