【问题标题】:JQuery Not Being Parsed For Only Certain Users Even Though JavaScript Enabled in Browsers即使在浏览器中启用了 JavaScript,也不会仅为某些用户解析 JQuery
【发布时间】:2013-05-14 15:53:25
【问题描述】:

我有一个包含十几个测试用户的测试系统。该系统使用 PHP5 和 JQuery 构建在 Zend 框架上。十几个用户中大约有 3 个在登录页面有问题;当他们单击按钮时,没有任何反应。此问题发生在 Firefox 和 Chrome 中。

正常的流程是当点击登录提交按钮时,对用户名和密码进行轻度验证,然后提交登录表单:

//Submits form
$('#login_btn').live('click', function() {

    var uname = $('#form_30296_userid').val();
    var pw = $('#form_30296_userpwd').val();

    if(uname == '' || pw == '')
        alert('You must enter a valid username and password.');
    else
        $("form").submit(); 
});

我已经确认这不是一个明显的代码问题,因为它适用于所有其他用户。

以下是我目前采取的步骤:

  1. 在任何其他事件发生之前添加了一个测试警报 [alert('!')] 点击事件。
  2. 创建了一个通知,如果用户未在其浏览器中启用 JavaScript,则会显示该通知
  3. 个人验证在 Firefox 中启用了 JavaScript,并且 有问题的用户可以使用 Chrome。

我亲自登录用户系统,并没有看到JS提示,并确定JS已启用,但是当我尝试点击按钮时,我没有看到测试“!”弹出来。

知道这里发生了什么吗? JavaScript 已启用,因此他们的浏览器由于某种原因无法实际解析它。我想知道这些用户是否可能没有更新他们的 Java 运行时设置,以及这是否会影响他们的浏览器。真的,我在这里不知所措。非常感谢任何帮助。

【问题讨论】:

  • 使用 .click 或者把它放在一个方法中,然后从提交按钮的 onclick 属性中调用它。
  • 或将您的代码放入$(function(){//code here});

标签: javascript jquery jquery-ui google-chrome firefox


【解决方案1】:

从 jQuery 1.7 开始,不推荐使用 .live() 方法。您应该使用 .on() 附加事件处理程序。 会不会是一些用户使用的是旧 jQuery 的缓存版本而其他用户使用的是新版本?

【讨论】:

  • 仅在他们关闭并重新打开浏览器之前,并且仅当网站使用 jQuery 的本地副本时。不过可能。
  • 是的,我知道这不太可能发生,但谁知道呢?由于脚本在不同的客户端上运行不同,我首先关心的是检查客户端是否确实使用相同的脚本......而且我不知道 JS 是如何加载的,也许涉及一些条件语句等等......
【解决方案2】:

您是否遇到任何 Javascript 错误?如果它不解析 jQuery,那么它应该在遇到美元符号时给出错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 2012-12-05
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多