括号中的 JSLint 表示未定义音频,但不抱怨图像
Posted
技术标签:
【中文标题】括号中的 JSLint 表示未定义音频,但不抱怨图像【英文标题】:JSLint in Brackets says Audio is not defined, but doesn't complain about Image 【发布时间】:2017-09-11 17:51:17 【问题描述】:我有这个代码:
var me =
PreloadImage: function(src)
var e = new Image();
e.src = src;
,
CreateAudio : function(src)
var c = new Audio(src);
c.play();
我对@987654324@ 有疑问,因为括号中的JSLint
表示尚未定义Audio
,但对于Image
却没有这样说:
有时我必须做类似window.console.log
而不是console.log
之类的事情,因为console.log
没有定义,但如果是这种情况,我必须在Audio
和Image
之前添加什么?
【问题讨论】:
代码还能用吗?这只是一个 JSLint 警告,而不是 javascript 错误。 @JJJ 没有。我想我修好了。 【参考方案1】:用var c = document.createElement('audio'); c.src=src; c.play();
代替var c = new Audio(src);
【讨论】:
不,要么正确配置 linter,要么使用类似 // eslint-disable-line no-undef【参考方案2】:接受的答案对我来说似乎不是解决该问题的最佳方式。您应该更改您的 JSLint
选项或在该特定行禁用该规则。
? 将其添加为全局
在JSLint
和ESLint
中,您可以通过将其添加为全局来修复它:
"globals":
"Audio": true
?添加浏览器环境
ESLint:
:
"env":
"browser": true
JSLint:
"browser": true
? 括号中的 JSLint 选项
您也可以在 Brackets 的首选项中更新它们:
"jslint.options":
"browser": true,
OR
"globals":
"Audio": true
? 在该行禁用 linting 或忽略该规则
您还可以为该行或该行上的特定规则禁用 linting:
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
【讨论】:
【参考方案3】:您必须等待 DOM 准备好。由于您使用的是 jQuery,请将您的代码封装在其中:
$(document).ready(function ()
// Your code...
);
您也可以使用以下语法:
$(function ()
// Your code...
);
(额外提示:在您的代码中使用 switch
指令。RoNBeta.js
有点吓人......)
【讨论】:
我没有在 RoNBeta.js 中使用 jQuery。我添加了一个功能来检查它。 也许是这样,但我的 JS 文件应该是灵活的。以上是关于括号中的 JSLint 表示未定义音频,但不抱怨图像的主要内容,如果未能解决你的问题,请参考以下文章
如何告诉 JSLint / JSHint 已经定义了哪些全局变量