0

我的页面中有一个来自另一个子域的 iframe。在这个 iframe 中我有一个表格

<div id="main"></div>
<form id="fileForm" method="POST" action="https://othersub.samedomain.de/upload" enctype="multipart/form-data">
    <input name="filename" type="file" id="filename"><br>
    <input name="action" type="hidden" value="fileupload">
    <a href="#" id="file-upload">upload</a>
</form>

在我的 JS 中,我有这个:

$(document).ready(function() {

$("#file-upload").click(function(event){
    event.preventDefault();     
    console.log("CLICK EVENT");
    $("#fileForm").submit();
});

$("#fileForm").ajaxForm({
    'target': '#main',
    'dataType':  'json',
    'type': 'POST',
    'url': 'https://othersub.samedomain.de/upload',
    beforeSubmit: function(){
        /* show loading */      
    },
    success: function(response, statusText, xhr, $form) {               
        /* do */
    },
    error: function(response, statusText, xhr, $form) {
        /* do */
    }
});

});

所以我点击我的上传按钮,我在 IE 中变成了一个糟糕的错误:(拒绝访问)SCRIPT5

那就是这行(554)代码:

submitFn.apply(form);

或者更多:

try {
form.submit();
} catch(err) {
// just in case form has element with name/id of 'submit'
var submitFn = document.createElement('form').submit;
submitFn.apply(form);
}

当他必须使用 iframe 上传时,这发生在旧 IE 中。我希望你能帮忙。

此致

4

1 回答 1

0

输入文件有一个大问题,在IE上点击这个元素是必要的,如果你使用一个javascript来模拟这个点击,你提交后会出错。试试这个,将输入文件与 alpha 0 和过滤器 0 放在一个假按钮上以选择文件

样本

START HTML--------------------------------
 < form ... >
   < input type="file" id="ID_INPUTFILE" ....>
   < a href="#" id="FAKE_BUTTON"> CHOSE YOU FILE < /a>
   ...
 < /form >
< /html>
END HTML----------------------------------

START CSS--------------------------------- < style> form { position:relative; } #FAKE_BUTTON { width: 200px; height: 30px; left: 10px; top: 10px; z-index:2; } #ID_INPUTFILE { position: absolute; width: 200px; /*WIDTH_OF_FAKE_BUTTON*/ height: 30px; /*HEIGHT_OF_FAKE_BUTTON*/ left: 10px; /*LEFT_POSITION_OF_FAKE_BUTTON */ top: 10px; /*TOP_POSITION_OF_FAKE_BUTTON */ z-index: 3; /*ALWAY OVER FAKE BUTTON */ opacity: 0.0; /*TO PUT INVISIBLE */ filter: alpha(opacity=0); /*TO PUT INVISIBLE fix ie */ } < /style> END CSS-----------------------------------

于 2013-12-12T17:06:29.573 回答