setTimeout不能在safari手机上工作
setTimeout not working on safari mobile
我有一个功能,显示菜单时点击它,我希望它在5秒后消失。这是我的javascript -它在桌面浏览器上正常工作,但它不会在移动浏览器上消失。
$(function() {
$('#prod_btn').click(function() {
$(this).addClass('selected').next('ul').css('display', 'block');
setTimeout(hideMenu, 5000);
});
});
function hideMenu() {
$('#prod_btn').removeClass('selected').next('ul').css('display', 'none');
}
问题在哪里?
谢谢
我刚刚遇到了同样的问题。我的代码在Mac上的任何浏览器上都运行得很好,但在iOs设备上就不行了。
我在超时函数上使用"。bind(this)",这就是导致我出现问题的原因。当我用"。在我的脚本中,Bind就像一个咒语。
我的代码是这样的:
searchTimeout = setTimeout(function() {
...
}.bind(this),250);
为了在iOs设备上工作,我(如上所述)添加了以下内容:
Function.prototype.bind = function(parent) {
var f = this;
var args = [];
for (var a = 1; a < arguments.length; a++) {
args[args.length] = arguments[a];
}
var temp = function() {
return f.apply(parent, args);
}
return(temp);
}
我在你的setTimeout上没有看到任何.bind,但对于其他有同样问题的人来说,这可能是问题所在。这就是我发帖的原因:-)
我将您的示例移动到jsbin中,它可以在我的iphone 4上工作。
请在您的设备上进行测试:http://jsbin.com/asihac/5
您可以在这里看到代码http://jsbin.com/asihac/5/edit
这个例子是使用jQuery -最新的,我只添加了所需的css类
这并不适用于你的代码,但是长时间运行的脚本在iOS设备上失败的一个常见问题是,MobileSafari在10秒后杀死了一个javascript线程。你应该能够使用setTimeout和/或setInterval来解决这个问题,或者你可以通过创建一个快捷方式来避免它,从而将它作为一个应用程序运行。参见https://discussions.apple.com/thread/2298038,特别是Dane Harrigan的评论。
还要记住,如果延迟设置为太短的值,则任何setTimeout函数实际上都可能在DOM元素呈现时触发。虽然这似乎是显而易见的,但它很容易与没有方法触发混淆。一个好的测试方法是运行一个警报提示符。
window.onLoad(alert("hey!"));
- Dropdown不会't工作手机浏览器&Firefox
- js滑动不'我不能在智能手机上工作
- 图片's的高度与手机/平板电脑的高度相同-只能在Chrome中正常工作
- 使用科尔多瓦在安卓中无法正常工作,从手机中获取联系人
- jQuery 手机间隙:- 列表视图中的自动分隔器是否正常工作
- 为什么jQuery效果在我的手机上不起作用,但在我的桌面上工作
- 地理定位可以在网络浏览器上工作,但不能在android手机浏览器上工作
- 电话号码和手机的正则表达式;不能正常工作
- ng mousedown和ng mouseup在手机中不工作
- Regex模式验证手机不工作
- 带宽检查与视频网站(工作在手机和平板电脑)
- 我的滚动不工作在三星安卓手机,但在所有的浏览器和设备工作良好
- 工作书签脚本的iphone/智能手机
- setTimeout不能在safari手机上工作
- Jquery hide()方法在平板电脑/手机上不工作
- Soundcloud stream: onfinish功能无法与锁定的手机一起工作
- jQuery的点击功能在安卓手机浏览器中不工作
- 让onClick属性和点击功能在触摸屏(智能手机)上工作
- HTML jquery onclick事件不能在Android手机上动态创建的链接上工作
- Bootstrap 3手机版不工作