有没有办法强制更新/运行IntersectionObserver实例?当视口发生变化时,回调将默认执行。但是我正在寻找一种在其他事件发生时执行它的方法,比如元素的变化。
一个例子:
初始化时一切正常。但是当你改变#red元素的位置时,什么也没有发生。
// elements
let green = document.querySelector('#green');
let red = document.querySelector('#red');
// observer callback
let callback = entries => {
entries.forEach(entry => {
let isInside = entry.intersectionRatio >= 1 ? "fully" : "NOT";
console.log("#" + entry.target.id + " is " + isInside + " inside #container");
});
};
// start observer
let options = {root: document.querySelector('#container')};
let observer = new IntersectionObserver(callback, options);
observer.observe(green);
observer.observe(red);
// button action
document.querySelector('button').addEventListener('click', () => {
red.style.right = red.style.right …Run Code Online (Sandbox Code Playgroud)我想在click事件期间检查事件目标的特定属性:
$('div').on('click', function(e) {
console.log(e.target.attr('class'));
});
Run Code Online (Sandbox Code Playgroud)
这会导致浏览器控制台出错:
main.js:47未捕获TypeError:e.target.attr不是函数
是不是event.target一个jQuery对象?
我想使用Angular 6和Web API下载PDF.这是代码实现,
mycomponent.ts
download(myObj: any) {
this.testService.downloadDoc(myObj.id).subscribe(result => {
var url = window.URL.createObjectURL(result);
window.open(url);
console.log("download result ", result);
});
}
Run Code Online (Sandbox Code Playgroud)
myService.ts
downloadDoc(Id: string): Observable<any> {
let url = this.apiUrl + "api/myApi/download/" + Id;
return this.http.get(url, { responseType: "blob" });
}
Run Code Online (Sandbox Code Playgroud)
Web API服务
[HttpGet("download/{DocId}")]
public async Task<HttpResponseMessage> GetDocument(string docId)
{
var docDetails = await _hoaDocs.GetDocumentDetails(docId).ConfigureAwait(false);
var dataBytes = docDetails.Stream;
var dataStream = new MemoryStream(dataBytes);
var response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.OK,
Content = new StreamContent(dataStream)
};
response.Content.Headers.ContentDisposition = …Run Code Online (Sandbox Code Playgroud) 我将属性名称存储在字符串中的某个位置,并且需要一种方法来创建与datasetapi 一起使用的更正名称.我得到属性样式的名字,比如data-attrib-name.所以我需要将它们转换为驼峰盒并移除data-它前面.
我现在发现的最短路是下面的替换.但这对我来说有点不好意思.我的任务有更好的解决方案/更短的方式吗?
console.log(
"data-my-test-name"
.replace('data-', '')
.replace(/-([a-z]?)/g, (m, g) => g.toUpperCase())
);Run Code Online (Sandbox Code Playgroud)
我的页面中有文本区域控件,我的代码是这样的,当用户单击文本区域或按"ENTER"键时,它将在文本区域中创建项目符号列表.但问题是,如果用户点击文本区域并且它将创建项目符号列表,但如果用户没有在文本区域中键入任何内容,则它应该为空并且应该删除项目符号.简单来说,如果文本区域子弹列表中没有数据,则应删除它.还有一件事是阻止用户从文本区域删除子弹.
这是我的代码:
<textarea name="MondayAcomp" id="MondayAcomp" cols="45" rows="5" onKeyDown="if(event.keyCode == 13) return false;" onKeyUp="bulletOnEnter(this.id)" onFocus="onfoc(this.id)" onBlur="onFocOff(this.id)" style="margin: 0px; width: 200px; height: 219px;"></textarea>
Run Code Online (Sandbox Code Playgroud)
Javascript函数:
function onfoc(id) {
if (document.getElementById(id).value == "") {
document.getElementById(id).value += '• ';
}
}
function onFocOff(id) {
if (document.getElementById(id).value == '• ') {
document.getElementById(id).empty;
}
}
function bulletOnEnter(id) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
event.preventDefault();
document.getElementById(id).value += '\n• ';
}
var txtval = document.getElementById(id).value;
if (txtval.substr(txtval.length - 1) == '\n') …Run Code Online (Sandbox Code Playgroud) 我有一个内部项目,我想将命令链接到文件bin.喜欢这样package.json:
{
"name": "my-project",
"bin": {
"cli-name": "./bin/my-executable.js"
},
"dependencies": {
"node-red": "^1.0.0"
}
}
Run Code Online (Sandbox Code Playgroud)
执行时npm install,将安装所有依赖项,并且也将创建bin配置node-red.
但我自己bin将被完全忽略.这不是可以用cli-name在cmd.npm link在第二步中也必须执行.然后cli-name将在控制台中作为命令使用.我甚至试过在其中使用with postinstall脚本,但后来我得到了一个循环......npmnpm link
有没有办法一步到位npm install?
我很好奇如何测试 avalue为 astring 或 numberwith chai。当这是一个严格的测试时,我知道如何为 astring或 a编写测试number。但如何处理,什么时候value可以成为其中之一呢?
对字符串的测试:
describe("test", () => {
it("should be a string", () => {
let value = "1234";
value.should.be.a("string");
});
});
Run Code Online (Sandbox Code Playgroud)
对数字的测试:
describe("test", () => {
it("should be a number", () => {
let value = 1234;
value.should.be.a("number");
});
});
Run Code Online (Sandbox Code Playgroud)
有没有内置的方法可以chai做到这一点?
我知道我可以采取一些解决方法,如下所示。但这感觉有点老套。
describe("test", () => {
it("should be a number or string", () => {
let value = 1234; …Run Code Online (Sandbox Code Playgroud) 一个数组可以包含多个值。我想检查所有值是否相同或不同。
例子
var a = [2, 4, 7, 2, 8]; // all values are not same
var b = [2, 2, 2, 2, 2]; // all values are same
Run Code Online (Sandbox Code Playgroud)
我如何在 jquery 中检查它
我PhpStorm/WebStorm IDE不断告诉,认为class和constructor未使用的一些类(不是所有).我已经在设置中设置了JavaScript语言版本ECMAScript6并启用了Node.js支持.一般来说代码也可以正常工作.例如 ...
文件TestClass.js:
module.exports = class Test {
constructor() {
console.log("Test.constructor");
}
test() {
console.log("Test.test");
}
}
Run Code Online (Sandbox Code Playgroud)
File Test.js:
let Test = require("./TestClass");
let inst = new Test();
inst.test();
Run Code Online (Sandbox Code Playgroud)
有了这个,代码检查一直告诉我:
未使用的类TestClass
未使用的方法构造函数
有什么不对或有没有办法压制警告?IDE通常不显示禁止此选项的选项.
甚至另一个问题似乎是,匿名分类也导致检查问题.如果我重写module.exports = class Test {为module.exports = class {甚至test()类中的方法将被标记为unused.我还没有办法防止这种情况......
自从我从升级jQuery 1.x/ jQuery 2.x到jQuery 3.x,我现有的代码不会被正确地执行了.一切正常,但load事件监听器不再被触发或有时被触发:
$(function() {
$(window).on("load", function() {
// this line will never/occasionally be executed
console.log("window is loaded!");
});
});
Run Code Online (Sandbox Code Playgroud) javascript ×7
jquery ×4
html ×2
node.js ×2
angular ×1
angular6 ×1
chai ×1
es6-class ×1
jquery-3 ×1
mocha.js ×1
npm ×1
npm-install ×1
npm-link ×1
package.json ×1
phpstorm ×1
unit-testing ×1
webstorm ×1