我很难理解以下代码的作用。请问有谁可以帮助我理解这段代码吗?
var PnPResponsiveApp = PnPResponsiveApp || {};
PnPResponsiveApp.responsivizeSettings = function () {
// return if no longer on Settings page
if (window.location.href.indexOf('/settings.aspx') < 0) return;
// find the Settings root element, or wait if not available yet
var settingsRoot = $(".ms-siteSettings-root");
if (!settingsRoot.length) {
setTimeout(PnPResponsiveApp.responsivizeSettings, 100);
return;
}
}
答案 0 :(得分:1)
<video id="video" height="120" width="160" autoplay></video>
<a id="link"></a><br>
<div id="div"></div>
上面一行确保PnPResponsiveApp变量获取旧值(如果已存在),否则设置为新对象。
var PnPResponsiveApp = PnPResponsiveApp || {};
这里创建了一个新功能。
PnPResponsiveApp.responsivizeSettings = function () {
如果当前页面的URL不是设置页面,则该功能会立即退出。
// return if no longer on Settings page
if (window.location.href.indexOf('/settings.aspx') < 0) return;
这会使所有元素的类别为 // find the Settings root element, or wait if not available yet
var settingsRoot = $(".ms-siteSettings-root");
。
.ms-siteSettings-root
如果找到任何元素(如果节点列表的长度不为零),则在100毫秒内调用PnPResponsiveApp.responsivizeSettings函数。
答案 1 :(得分:1)
基本上非常简单的代码,我会解释发生了什么:
var PnPResponsiveApp = PnPResponsiveApp || {};
这是查看变量是否已经定义的非常常见的方法,如果没有,则避免抛出错误并将其等同于空对象,它在许多框架和库中使用,非常安全地检查var是否已存在...请点击此处了解更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
PnPResponsiveApp.responsivizeSettings = function () {};
这基本上是一个简单的函数,但附加到对象PnPResponsiveApp - 如果只是responsivizeSettings = function(){};它附加到窗口对象
if (window.location.href.indexOf('/settings.aspx') < 0) return;
这是检查链接栏中的链接是否有settings.aspx - 如果不包含字符串,indexOf返回-1,所以如果它不是settings.aspx则返回-1小于0然后整个函数return ...第二次返回基本上返回undefined
var settingsRoot = $(".ms-siteSettings-root");
这基本上是查找具有ms-siteSettings-root类的所有元素,并将它们等同于变量settingsRoot,它可以是单个DOM或多个...
if (!settingsRoot.length) {
这基本上检查是否有任何DOM元素有ms-siteSettings-root类,长度返回一个Number,所以如果它不存在,则返回0,如果有返回1,2,3等等... 0是在JavaScript中等于False并且大于0等于True,所以这样我们可以检查它是否存在...
setTimeout(PnPResponsiveApp.responsivizeSettings, 100);
所以如果settingsRoot在那里,我们执行这个功能块,并且使用setTimeout我们等待100ms ... setTimeout总是以这种方式工作,setTimeout(function(),time);并在最后发生同样的回报...
希望它的信息足够......