4

現在、.NET MVC プラットフォームで新しいサイトに取り組んでおり、iframe を介して非同期ユーザー アップロード イメージを実装しようとしています。私はほぼタスクを完了し、他のブラウザーで完全に機能しますが、IE 9 では次のエラーで失敗します:Microsoft JScript runtime error: Access is denied.セキュリティ上の問題のようです。以下のコード スニペットとコメントを使用して、私の問題を説明させてください。 1. 入力ファイルが非表示になっている HTML フォームがあります。フォーム内には、1 つの入力要素とtype="file"送信ボタン (これも非表示) があります。

<div class="brandLogo">
<p>@identity._RetailerLogo.Caption</p>
<div id="LogoContainer" class="imgLogo">
    <img id ="CompanyLogo" src="@DefaultRetailerImage" alt="" title="@Model._ADD_LOGO_IMAGE">
</div>
<p class="txtR">
<a id="UploadLogo" href="#" style="position: absolute; left: -999em; top: -999em;">Upload
</a>
</p>

<form id="UploadForm"
    action="@Url.Action("editLogo", "Profile")"
    method="POST" enctype="multipart/form-data"
    name="UploadForm"
    target="UploadTarget"
    style="position: absolute; left: -999em; top: -999em;">
<input name="UploadLogoFile" id="UploadLogoFile" type="file" onchange="clickUploadButton();" />
<input type="button" id="SubmitLogoForm" value="Save Image" />
</form>

<iframe id="UploadTarget" onload="UploadImage_Complete();" name="UploadTarget" style="position: absolute;
left: -999em; top: -999em;"></iframe>

  1. HTML フォームは、javascript を介してファイルを iframe に投稿しようとします。フォームと iframe の両方が、同じドメインの下のローカル プロジェクト (asp.net mvc) にあります (これを localhost の下で実行します)。

  2. 入力要素で on change イベントを使用して、ユーザーが何かを選択したことをキャプチャし、ajax 呼び出しでフォームの送信をトリガーしています。したがって、javascript を介して呼び出すと $("#formID").submit()、アクセス拒否エラーが発生します。

どんな助けでもいただければ幸いです

4

1 に答える 1

2

以前にこの IE のバグを見ましたが、最後にメソッドを変更しました。入力要素の変更イベントをトリガーすることは、IE によるセキュリティ リスクとプログラム的に見なされます :( (愚かな IE)

デフォルトでは、IE ではファイル要素の変更をトリガーできません。必要に応じて、この機能でajaxuploader またはfileuploaderを使用できます

var uploader = new qq.FileUploader({
// pass the dom node (ex. $(selector)[0] for jQuery users)
element: document.getElementById('file-uploader'),
// path to server-side upload script
action: '/server/upload'
});
于 2012-09-05T18:18:01.670 に答える