我已经看到了几个类似的帖子,其解决方案似乎适用于这些人,但我无法让这个工作。我在项目中使用http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/。它完美地工作在所有浏览器中,除了Safari浏览器,“BROWSE”按钮不会打开文件对话框。存在下面的代码中的script.js(其中包括该插件工作):jQuery .click()在Safari中不起作用
$('#drop a').click(function(){
// Simulate a click on the file input button
// to show the file browser dialog
$(this).parent().find('input').click();
});
的。点击()在Safari不火。我曾尝试解决方案按jQuery .click() works on every browser but Safari和实施
$('#drop a').click(function(){
var a = $(this).parent().find('input');
var evObj = document.createEvent('MouseEvents');
evObj.initMouseEvent('click', true, true, window);
a.dispatchEvent(evObj);
});
但后来我得到的错误dispatchEvent is not a function
。然后,我对此进行了一些研究,并尝试了jQuery.noConflict()路由,但这并未解决该错误。另外,我在我的主文件中使用了很多jQuery,并且我无法为整个页面激活noConflict()模式。也没有理由说,jQuery应该与任何东西冲突,因为我只使用jQuery和普通的JavaScript,而我没有使用任何类似原型或角色。有人知道另一种方式来模拟Safari中的点击吗?
UPDATE:仅供参考,我在提到功能添加了一个alert('test')
(当“浏览”点击触发),并且我得到Safari中的警报,但它不是模拟文件的点击输入元素,即:它不打开文件对话框。
试试这个$(this).parent()。find('input')。trigger(“click”); –
尝试'var a = $(this).parent()。find('input')[0];' – jalynn2
@sudharsan:在一个jQuery对象上,'.trigger(“click”)''和'.click() '是一回事。 –