如果您在CHrome中运行此jsfiddle,它将起作用,但在IE和FF上它失败:http://jsfiddle.net/LbFPu/2/
我想它可以解决每个引擎如何写入DOM的问题?有没有办法等待以前的内容写?例如:
function firstMe(){
$('body').append('<div id="first"></div>');
// many other new elements appended
}
function thenMe(){
$('#first').append('etc');
// many of the recently appended elements being referenced
}
按顺序调用时,我想它可以在CHrome中正常工作,但不能在IE&amp; FF。从jsfiddle结果判断。
以前有人不得不处理这个问题吗?
答案 0 :(得分:1)
这只是因为你试图写入尚未加载的iframe,看起来Chrome更快:
$('body').append('<iframe id="upload"></iframe>');
var form = $('<form enctype="multipart/form-data" id="image_upload" action="index.php">'
+ '<input type="file" accept="image/*" multiple name="img[]" id="image" />'
+ '<br>'
+ '<input type="submit" value="Upload images" class="upload" />'
+ '</form>');
$('#upload').on('load', function() {
$(this).contents().find('body').append(form);
});
答案 1 :(得分:-1)
在FF中,如果你在小提琴的最后一行附近添加setTimeout()
,那就可以了:
$('body').append('<iframe id="upload"></iframe>');
var form = $('<form enctype="multipart/form-data" id="image_upload" action="index.php">' +
'<input type="file" accept="image/*" multiple name="img[]" id="image" />' + '<br>' +
'<input type="submit" value="Upload images" class="upload" />' + '</form>');
setTimeout(function () {
$('#upload').contents().find('body').append(form);
}, 100);