Brackets中的JSLint说音频没有定义,但不会抱怨Image

时间:2017-04-15 17:18:32

标签: javascript dom eslint jslint adobe-brackets

我有这段代码:

var me = {
    PreloadImage: function(src) {
        var e = new Image();
        e.src = src;
    },
    CreateAudio : function(src) {
        var c = new Audio(src);
        c.play();
    }
}

我遇到new Audio()的问题,而Brackets中的JSLint表示Audio尚未定义,但Image没有说明相同:< / p>

enter image description here

有时我必须执行window.console.log而不是console.log之类的操作,因为console.log未定义,但如果是这种情况,我必须在Audio之前添加什么和Image

3 个答案:

答案 0 :(得分:0)

而不是var c = new Audio(src);使用var c = document.createElement('audio'); c.src=src; c.play();

答案 1 :(得分:0)

被接受的答案似乎不是解决我这个问题的最佳方法。您应该更改JSLint选项或在该特定行上禁用该规则。

将其添加为全局

JSLintESLint中,您都可以修复它,也可以将其添加为全局变量:

{
    "globals": {
        "Audio": true
    }
}

添加浏览器环境

ESLint:

{
   "env": {
       "browser": true
   }
}

JSLint:

{
    "browser": true
}

括号中的JSLint选项

您还可以在“括号”的首选项中对其进行更新:

"jslint.options": {
    "browser": true,

     OR

    "globals": {
        "Audio": true
    }
}

在该行上禁用掉毛或忽略该规则

您还可以为该行或该行上的特定规则禁用掉毛:

ESLint

const c = new Audio(src); // eslint-disable-line

或者:

// eslint-disable-next-line
const c = new Audio(src);

JSLint

const c = new Audio(src); // jslint ignore:line

答案 2 :(得分:-1)

您必须等待DOM准备就绪。由于您使用的是jQuery,请将您的代码封装在:

$(document).ready(function () {
  // Your code...
});

您也可以使用以下语法:

$(function () {
  // Your code...
});

(额外提示:在代码中使用switch指令。RoNBeta.js有点吓人......)