首页 > 解决方案 > $.support.placeholder 在 jQuery 中是什么意思?

问题描述

我不明白这种情况:$.support.placeholder

谁能给我解释一下这是干什么用的?

if ($.support.placeholder) { 
  alert("Testing"); 
} else { 
  return; 
}

标签: javascriptjqueryhtml

解决方案


它正在检查对象placeholder上的属性是否真实¹,如果是,它会执行; 如果没有,它会退出该代码所在的函数。$.supportalertreturn

jQuery 的support对象(早已弃用,不应再使用)告诉您当前浏览器支持什么。从链接:

代表不同浏览器功能或错误存在的属性集合。供 jQuery 内部使用;当内部不再需要特定属性以提高页面启动性能时,可能会删除它们。对于您自己项目的功能检测需求,我们强烈建议使用诸如Modernizr之类的外部库,而不是依赖jQuery.support.

(我的重点)

在这种情况下,检查浏览器是否支持元素的placeholder属性。input但见上文,检查是不可靠的。如果 jQuery 不再需要在内部知道此信息,则可能会删除该属性,并且该代码将被欺骗认为浏览器不支持placeholder(几乎所有支持),因为获取不存在的属性的值会导致结果in undefined,这是假的。

事实上,在撰写本文时,jQuery 的当前版本(v3.3.1)没有placeholder

console.log("typeof $.support.placeholder:", typeof $.support.placeholder); // "typeof $.support.placeholder: undefined"
var input = document.createElement("input");
input.type = "text";
var supportsPlaceholder = "placeholder" in input;
console.log("supportsPlaceholder: ", supportsPlaceholder); // "supportsPlaceholder: true" (in nearly all browsers)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

问题中的代码会错误地报告您的浏览器placeholder即使支持也不支持。


¹值是true在用作布尔值时强制转换为的值,例如在if. 一个虚假值是一个强制false. 虚假值是null, undefined, 0, NaN, "", 当然还有false; 所有其他值都是真实的。


推荐阅读