小编Var*_*rma的帖子

如何在调用函数中设置空上下文?

function test(){         
     if(this === null){
        console.log("This is null");
     }else{
         console.log("This is Object");
     }
 }
test.call(null);
test.call({});
Run Code Online (Sandbox Code Playgroud)

输出:

这是对象.

这是对象.

但我期待输出:

这是空的.

这是对象.

为什么Null没有设置在上下文中?

javascript jquery

46
推荐指数
1
解决办法
1327
查看次数

将具有混合内容的Div作为图像复制到剪贴板

我正在尝试构建一个应用程序,我需要将整个div作为图像复制到剪贴板.div可以包含嵌套的div和图像,svgs等.

我已经搜索了很多,但无法找到我的要求的任何答案.

目前,我可以将其转换为图像,并使用以下代码在新选项卡中打开它.但是,它只有在div中有纯文本时才有效.当我添加图像时,它会失败.我只是复制了黑屏.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
</head>
<body>
    <script type="text/javascript" src="https://github.com/niklasvh/html2canvas/releases/download/0.4.1/html2canvas.js"></script>
    <script type="text/javascript">
    function copy() {
        var c = document.getElementsByClassName('myclass')[0];
        html2canvas(c, {
            onrendered: function(canvas) {
                theCanvas = canvas;
                var image = new Image();
                image.id = "pic"
                image.src = theCanvas.toDataURL();
                image.height = c.clientHeight
                image.width = c.clientWidth
                window.open(image.src, 'Chart')
            }
        })
    }
    </script>
    <button onclick='copy()'>Copy</button>
    <div class="myclass">
        Hi There!!!!!!!!
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这有助于我在新窗口中打开图像.任何方式直接将其复制到剪贴板而不是从新窗口右键单击上下文菜单,并使其全部适用于混合内容.任何帮助,将不胜感激.

编辑:我得到的代码使用img标记在本地服务器上托管它,并使其与svg元素一起使用.但我的应用程序混合了以下标签:

<div>
    <div>
        some text here
        <svg>
            <g>...</g>
            <g>...</g>
        </svg>
        <svg> …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery webpage-screenshot html2canvas

12
推荐指数
1
解决办法
3671
查看次数

改进Lombok @Data代码覆盖率

我正在为我的项目编写单元测试,并尝试实现至少80%的代码覆盖率.问题是,我使用的龙目岛的@Data注解产生getter和setter,当我跑我的单元测试,所有的getter和setter方法与其他方法,如沿toString,equals,hashcode等错过,我的代码覆盖需要一个打击.有没有解决方法呢?我一直在搜索这个问题,但一直找不到任何有用的东西.任何有关这方面的帮助将不胜感激.

我正在使用Eclemma进行代码覆盖分析.

java eclipse unit-testing code-coverage eclemma

8
推荐指数
4
解决办法
1万
查看次数

Angular CLI不会创建新项目

我正在尝试通过angular cli创建一个项目(名为ngadmin),但它会在此命令上抛出错误:ng new ngadmin.错误是:

fs:不支持重新评估本机模块源.如果您使用的是graceful-fs模块,请将其更新为更新版本.

您不能在angular-cli项目中使用new命令.

我不确定问题是什么,因为这个cli几天前对我来说很好.

angular-cli angular

5
推荐指数
2
解决办法
9409
查看次数

D3.js更新过渡

我正在使用以下代码更新使用d3v4创建的条形图:

d3.select("button.add")
        .on("click", function(){
            dataset.push(Math.floor(Math.random() * 30) + 5);
            xScale.domain(d3.range(dataset.length))
                    .rangeRound([0, w])
                    .padding(0.2);
            yScale.domain([0, d3.max(dataset)]);
            var bars = svg.selectAll("rect")
                            .data(dataset);

            bars.enter()
                .append("rect")
                .attr("class", "bar")
                .attr("x", w)
                .attr("y", function(d){return yScale(d);})
                .attr("width", xScale.bandwidth())
                .attr("height", function(d){return h - yScale(d)})
                .attr("fill", function(d){
                    return 'rgb('+d*3 + ',' + d*6 + ',' + d*9 + ')';
                });

            bars.transition()
                .delay(function(d, i){
                    return(i*1500) / dataset.length;
                })
                .duration(500)
                .ease(d3.easeLinear)
                .attr("x", function(d, i){ return xScale(i);})
                .attr("y", function(d) {return yScale(d);})
                .attr("width", xScale.bandwidth())
                .attr("height", function(d) {return h - yScale(d);});
        });
Run Code Online (Sandbox Code Playgroud)

虽然添加了数据并且还创建了rect元素,但是对于阵列中最新添加的元素不会发生转换.只有在添加下一个元素并且不会发生该元素的转换时才会发生这种情况.

任何人都可以提供任何可能出错的提示吗? …

javascript charts css-transitions d3.js d3v4

2
推荐指数
1
解决办法
1622
查看次数