【问题标题】:can plain javascript and jQuery be minified in one file可以将纯javascript和jQuery缩小到一个文件中吗
【发布时间】:2017-02-02 04:01:06
【问题描述】:

我有一个用 jQuery (3.1.0) 编写的 js 文件,只有一行纯 javascript。

例如:

$(window).on('load',function(){
 var email = $('#email');
 function setMessage(str){ 
  document.getElementById('email').setCustomValidity(str);
 };
 email.bind('keyup',function(){
  if(email.val()==''){
    setMessage('Box is Empty');
  }
 });
});

当它是这样的时候它工作得很好。

下一步是缩小 js 文件,这就是问题开始的时候,控制台一直在尖叫Uncaught TypeError: Cannot read property 'setCustomValidity' of null - jquery-3.1.0.min.js

我使用的来源:

setCustomValidity

Make sure semi-colon - 已选中

【问题讨论】:

  • jquery 是 javascript - 所以 .. 你有 11 行 javascript
  • 听起来很奇怪...你能显示相应的缩小代码,以及一个实时的minimal reproducible example 吗?
  • @JaromandaX 不,这是我所写内容的示例和较短版本。
  • 确保当代码运行时文档中确实有一个id为email的元素可以访问,我猜没有。 document.getElementById 如果没有找到元素,则返回 null,因此,如果它没有找到 id 为 email 的元素,则您正在尝试访问 nullsetCustomValidity 方法,但没有存在,因此有关无法读取nullsetCustomValidity 属性的错误消息。
  • 如果文档中没有#email,则绑定到它的keyup事件不会触发,因此也不会调用setMessage;除非它的 id 自绑定后已更改... cc @UselessCode

标签: javascript jquery minify


【解决方案1】:

而不是使用 document.ready 使用 window.onload

请参阅此内容以了解 onload 和 document.ready 之间的区别,因为您面临的错误是由于未加载元素而您尝试在文档完全加载之前访问元素

https://stackoverflow.com/a/3698214/1569443

使用下面的代码

$('document').ready(function(){
       var email = $('#email');
       function setMessage(str){ 
       document.getElementById('email').setCustomValidity(str);
      };
    email.bind('keyup',function(){
        if(email.val()==''){
        setMessage('Box is Empty');
        }
    });
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
相关资源
最近更新 更多