2

私はこのようなiframeとフォームを持っています:

<iframe id="FileUploadFrame" name="FileUploadFrame" src="" style="display: none; border: 0; width: 0; height: 0;">
            <form id="FileUploadForm" name="FileUploadForm" accept-charset="utf-8"  target="FileUploadFrame" enctype="multipart/form-data" encoding="multipart/form-data" method="POST" action="CIMtrek_Regional_WhseForm_FileUpload">
   </form>
</iframe>

これがフォームを送信する方法ですiframe

function fileUpload() {

    //var UploadForm = document.forms["FileUploadForm"];
    var UploadForm = global.forms["FileUploadForm"];

    alert("Form : "+typeof global.forms["FileUploadForm"]);
    alert("Form : "+typeof global.forms["FileUploadFrame"]);
    iframeId = document.getElementById("FileUploadFrame");


    // Add event...
    var eventHandler = function () {

        if (iframeId.detachEvent) iframeId.detachEvent("onload", eventHandler);
        else iframeId.removeEventListener("load", eventHandler, false);

        // Message from server...
        if (iframeId.contentDocument) {
            content = iframeId.contentDocument.body.innerHTML;
        } else if (iframeId.contentWindow) {
            content = iframeId.contentWindow.document.body.innerHTML;
        } else if (iframeId.document) {
            content = iframeId.document.body.innerHTML;
        }

        document.getElementById(div_id).innerHTML = content;
    }
    if (iframeId.addEventListener) iframeId.addEventListener("load", eventHandler, true);
    if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);

    //alert('submitting form');
    //form.submit();
    //document.forms["FileUploadForm"].submit();
    alert(UploadForm.submit());
}

しかし、フォームを送信するときに次の例外が発生します:

Error: Unable to get value of the property 'submit': object is null or undefined

問題を見つけて修正するのを手伝ってください。

よろしくお願いします

4

2 に答える 2

1

を取得する方法FileUploadFormは次のとおりです。

iframeId = document.getElementById("FileUploadFrame");
//This is the trick
var ifrDoc = iframeId.contentDocument || iframeId.contentWindow.document;
var UploadForm = ifrDoc.getElementById("FileUploadForm");

または、親の変数をフォームに設定するコードをフレームに含めることもできますが、その方法は信頼できません。

ソース: iframe 内のフォームへのアクセス


編集:

また、アップロード フォームを有効にするには、次の点を除いて、他のフォームと同じように見える必要があります。

  • フォームタグはPOSTメソッドを指定する必要があります
  • フォームタグは enctype を指定する必要がありますmultipart/form-data
  • フォームには<input type=file>要素が含まれている必要があります。
于 2013-02-07T10:03:11.667 に答える
1

document.forms["FileUploadForm"]フォームが iframe にあるという理由はありません。iframeのは、スクリプトが実行されるものとdocumentは異なります。document

スクリプトで、関数の先頭にこの行を追加します

var iframe = document.getElementById('FileUploadFrame');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var UploadForm = innerDoc.forms["FileUploadForm"];
于 2013-02-07T09:57:56.903 に答える