onclick中指定的函数未在移动设备上启动



所以我有一个可以在桌面和移动设备上工作的网页。然而,我在操作按钮时遇到了不少麻烦。

按钮是这样的:

<a class="button" id="upload-media-button" onclick='uploadMedia();'>Upload</a>

这是uploadMedia代码:

var uploadMedia = function() {
if(!isUploadFormVisible){
alert(isUploadFormVisible);
event.preventDefault();
event.stopPropagation();
dropperForm = document.getElementById("upload-form");
dropperForm.className = '';
isUploadFormVisible = 1;
$("body").addClass("modal-open");
} else {
alert(isUploadFormVisible);
event.preventDefault();
dropperForm = document.getElementById("upload-form");
dropperForm.className = 'hidden';
isUploadFormVisible = 0;
$("body").removeClass("modal-open");
refreshMedia(true);
}
}

有趣的是,这些按钮在桌面上工作得很好,在手机上也能部分工作(如果不是onclick='uploadMedia();,而是onclick='alert(whatever);,则警报会成功显示(。我花了昨天和今天的大部分时间试图解决这个问题,但根本不起作用。

我也试过这样的东西:

$(document).ready(function() {
$('#upload-media-button').on('click touchstart', function(){
dropperForm = document.getElementById("upload-form");
dropperForm.className = '';
isUploadFormVisible = 1;
$("body").addClass("modal-open");
});
}

但这仍然不起作用。

编辑:

尽管答案帮助我解决了这个问题,但这只是一个短暂的解决方案:这绝对令人难以置信,我真的很困惑如何让那些该死的按钮工作。我什么都试过了。

通过调查这个问题,我发现这个问题从未出现在桌面上(关闭和打开静态文件压缩(,然而,在移动设备上,压缩确实起到了作用,因为没有它,它可以正常工作。

这项调查的结论很清楚:检查您的代码是否存在语法错误。我丢失了十几个分号,控制台没有任何抱怨(事实上,它在桌面上运行良好,没有压缩(。

无论如何,如果你像我一样使用压缩,请确保从压缩文件中获取源代码,并通过JSHint(或任何对你有用的东西(运行它,以检查语法错误。

现在我明白为什么人们讨厌JS了。

没有href属性的<a>标记不是触摸屏的点击目标。

添加href="#"(使用合适的event.preventDefault();调用(或href="javascript:void(0);",使其成为一个实际的、可点击(可点击(的东西。

最新更新