Javascript无法在移动设备上运行,但适用于桌面设备

时间:2016-07-07 04:41:44

标签: javascript jquery

这适用于桌面浏览器,但不适用于我的iOS手机。我尝试添加'touchstart'并查看this post's solution来检查其他人是如何工作的,但它仍然无效。有关其他选项的任何建议吗?我也尝试添加 $('body').on('click touchstart', '.myContainer', function() { $(this).toggleClass('myContainer-unselected').toggleClass('myContainer-selected'); }); - 并将e添加到function()中,但这也不起作用。

我试过了:

$(document).on('click touchstart', 'body', function() {
      alert('hi');
    });

编辑: 似乎可能还有其他事情发生,我将代码更改为尽可能通用,并且它不是在iOS上触发事件,而是在我的chrome模拟器中工作:

$('body').css('display', 'none');

其他更新:

我已将以下代码添加到我的script.js文件中:

-1

正如预期的那样,我的桌面浏览器上的本地和heroku的屏幕都是空白的,但是当我在移动设备上测试时,屏幕不是空白的。看起来js工作不正常。

附图:

enter image description here enter image description here

4 个答案:

答案 0 :(得分:5)

答案:它不适用于iOS Safari的原因是因为在我的js页面中我使用的是ES6,特别是' let' [目前不支持] [1]。改为ES5,问题就消失了。

{{1}}

答案 1 :(得分:1)

这应该对你有所帮助。而不是将其绑定到body元素,将事件绑定到文档。

$(document).on('click touchstart', '.myContainer', function() {

      $(this).toggleClass('myContainer-unselected').toggleClass('myContainer-selected');
    });

还尝试更改将以下样式添加到myContainer类

cursor : pointer;

答案 2 :(得分:0)

您有两个选择:

  1. 重置浏览器的历史记录,因为浏览器的缓存读取了旧的源代码。
  2. 在桌面上更改源文件的名称,然后再次刷新页面。

答案 3 :(得分:0)

e.preventDefault();放在javascript函数中。