我已經看到了幾個類似的帖子,其解決方案似乎適用於這些人,但我無法讓這個工作。我在項目中使用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() '是一回事。 –