小编Kai*_*ido的帖子

对一个switch case语句使用两个值

在我的代码中,程序根据用户输入的文本执行某些操作.我的代码看起来像:

switch (name) {
        case text1: {
            //blah
            break;
        }
        case text2: {
            //blah
            break;
        }
        case text3: {
            //blah
            break;
        }
        case text4: {
            //blah
            break;
        }
Run Code Online (Sandbox Code Playgroud)

然而,案件里面的代码text1text4是一样的.因此,我想知道是否有可能实现类似的东西

case text1||text4: {
            //blah
            break;
        }
Run Code Online (Sandbox Code Playgroud)

我知道||运算符不会在case语句中工作,但是我可以使用类似的东西.

java switch-statement

259
推荐指数
10
解决办法
32万
查看次数

使用FireFox,Safari和Chrome将文本复制/放入剪贴板

在Internet Explorer中,我可以使用clipboardData对象来访问剪贴板.我怎样才能在FireFox,Safari和/或Chrome中执行此操作?

javascript clipboard dom

111
推荐指数
7
解决办法
13万
查看次数

获取语​​音列表语音合成Chrome(Web Speech API)

以下HTML在第一次单击时在控制台中显示空数组:

<!DOCTYPE html>
<html>
    <head>
        <script>
            function test(){
                console.log(window.speechSynthesis.getVoices())
            }
        </script>
    </head>
    <body>
        <a href="#" onclick="test()">Test</a>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在第二次单击中,您将获得预期的列表.

如果添加onload事件来调用此函数(<body onload="test()">),则可以在第一次单击时获得正确的结果.请注意,第一次调用onload仍然无法正常工作.它在页面加载时返回空,但后续工作.

问题:

由于它可能是测试版中的错误,我放弃了"为什么"的问题.

现在,问题是您是否要window.speechSynthesis在页面加载时访问:

  • 这个问题最好的黑客是什么?
  • 如何speechSynthesis在页面加载时确保它会加载?

背景和测试:

我正在测试Web Speech API中的新功能,然后我在我的代码中遇到了这个问题:

<script type="text/javascript">
$(document).ready(function(){
    // Browser support messages. (You might need Chrome 33.0 Beta)
    if (!('speechSynthesis' in window)) {
      alert("You don't have speechSynthesis");
    }

    var voices = window.speechSynthesis.getVoices();
    console.log(voices) // []

    $("#test").on('click', function(){
        var voices = window.speechSynthesis.getVoices();
        console.log(voices); // …
Run Code Online (Sandbox Code Playgroud)

voice speech-synthesis dom-events webspeech-api

48
推荐指数
4
解决办法
2万
查看次数

IE 11 Script1002 Array.Filter()

您好我在IE11中收到错误消息,但在Chrome中没有错误消息是:

Script1002语法错误

我的代码如下

var selectedRoles = vm.roles.filter(x => x.id === role.id);
Run Code Online (Sandbox Code Playgroud)

错误的行号和列号表明它是=> IE11不喜欢的箭头函数.就像我说的ChromeEdge一样好用

javascript ecmascript-6 internet-explorer-11

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

如何使用html5 canvas/javascript/jquery将svg转换为png并保存在服务器上

好吧,我需要一些关于将.svg文件/图像转换为.png文件/图像的帮助......

我的页面上显示了.svg图像.它保存在我的服务器上(作为.png文件).我需要根据需要将其转换为.png文件(单击按钮)并将.png文件保存在服务器上(我将使用.ajax请求执行此操作).

但问题是转换.

我读了很多关于html5 Canvas的东西,这可能有助于做我现在需要做的事情,但是我找不到任何明确的解决方案来解决我的问题,而且,tbh,我不明白我发现的一切......所以我需要一些明确的建议/帮助我必须这样做.

这是"html idea"模板:

<html>
    <body>
        <svg id="mySvg" width="300px" height="300px">
            <!-- my svg data -->
        </svg>
        <label id="button">Click to convert</label>
        <canvas id="myCanvas"></canvas>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

和一些js:

<script>
    $("body").on("click","#button",function(){
        var svgText = $("#myViewer").outerHTML;
        var myCanvas = document.getElementById("canvas");
        var ctxt = myCanvas.getContext("2d");
    });
</script>
Run Code Online (Sandbox Code Playgroud)

然后,我需要将svg绘制到Canvas中,获取base64数据,并将其保存在我的服务器上的.png文件中......但是......怎么样?我读到了很多不同的解决方案,我实际上......迷失了...我正在研究jsfiddle,但我实际上......无处可寻...... http://jsfiddle.net/xfh7nctk/6 / ...感谢您的阅读/帮助

html javascript svg png canvas

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

在fabric.js中将Canvas作为PNG下载,给出网络错误

我想使用fabric.js将Canvas下载为PNG.在下载时我想缩放图像.所以我使用multipliertoDataURL()函数的属性.但我得到了失败 - 网络错误

PS:如果我不给multiplier属性,它正在下载,但我确实想要使用multiplier属性,因为我必须缩放图像

这就是我在做的事情:

HTML代码:

<canvas width="400" height="500" id="canvas" ></canvas>
 <a id='downloadPreview' href="javascript:void(0)"> Download Image </a>
Run Code Online (Sandbox Code Playgroud)

JS

document.getElementById("downloadPreview").addEventListener('click', downloadCanvas, false);

var _canvasObject = new fabric.Canvas('canvas');

var downloadCanvas =    function(){
    var link = document.createElement("a");

link.href = _canvasObject.toDataURL({format: 'png', multiplier: 4});
      link.download = "helloWorld.png";
     link.click();

}
Run Code Online (Sandbox Code Playgroud)

html javascript canvas fabricjs

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

MediaStream同时捕获画布和音频

我正在开展一个项目,我想:

  1. 加载视频js并将其显示在画布上.
  2. 使用过滤器来改变画布的外观(以及视频).
  3. 使用MediaStream captureStream()方法和MediaRecorder对象记录画布表面和原始视频的音频.
  4. 在HTML视频元素中播放画布和音频的流.

我已经能够通过调整这个WebRTC演示代码在视频元素中显示画布记录:https://webrtc.github.io/samples/src/content/capture/canvas-record/

也就是说,我无法弄清楚如何在画布旁边录制视频的音频.是否可以从两个不同的源/元素创建包含MediaStreamTrack实例的MediaStream?

根据MediaStream API的规范,理论上应该有一些方法来实现这个目标:https: //w3c.github.io/mediacapture-main/#introduction

"MediaStream API中的两个主要组件是MediaStreamTrack和MediaStream接口.MediaStreamTrack对象表示源自用户代理中的一个媒体源的单一类型的媒体,例如由网络摄像头生成的视频.MediaStream用于分组几个MediaStreamTrack对象分成一个单元,可以在媒体元素中记录或渲染."

javascript canvas mediarecorder mediastream

15
推荐指数
2
解决办法
5512
查看次数

Html2Canvas与泰语的问题

运行此代码然后"保存"您将获得图像差异.解决这个问题的任何解决方案?

代码示例

$(document).on("click", "#save", function() {
  html2canvas(
    $("body"), {
      onrendered: function(canvas) {
        $("#result_here").append(canvas);
        var data = new FormData();
        data.append("data", "the_text_you_want_to_save");

        var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
        xhr.open('post', 'save_file.php', true);
        xhr.send(data);
      }
    }
  );
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>

<div id="canvas" style="border:1px solid red; width: 300px; heght:300px; ">
  <p>hello
    <p>
      <p>??????</p>
</div>

<div id="result_here" stlye="border:1px solid blue;"></div>

<button id="save">SAVE</button>
Run Code Online (Sandbox Code Playgroud)

这是我的结果

在此输入图像描述

(第一个块是html,第二个块是图像的结果,你会看到差异)

javascript jquery screenshot html2canvas

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

开玩笑的URL.createObjectURL不是一个函数

我正在开发一个reactJs应用程序。我正在开玩笑地测试我的应用程序。我想测试下载blob的功能。

但是不幸的是我收到这个错误:

URL.createObjectURL不是函数

我的测试功能:

describe('download', () => {
    const documentIntial = { content: 'aaa' };
    it('msSaveOrOpenBlob should not have been called when navigao is undefined', () => {
      window.navigator.msSaveOrOpenBlob = null;
      download(documentIntial);
      expect(window.navigator.msSaveOrOpenBlob).toHaveBeenCalledTimes(0);
    });
  });
Run Code Online (Sandbox Code Playgroud)

我要测试的功能:

export const download = document => {
  const blob = new Blob([base64ToArrayBuffer(document.content)], {
    type: 'application/pdf',
  });
  if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blob);
    return;
  }

  const fileURL = URL.createObjectURL(blob);
  window.open(fileURL);
};
Run Code Online (Sandbox Code Playgroud)

javascript testing blob reactjs jestjs

12
推荐指数
6
解决办法
7723
查看次数

跨浏览器获取keyCode

我正试图通过跨浏览器的方式来倾听keyCode用户的意见keyDown.

对于移动浏览器,我必须触发虚拟键盘,因此我使用由css隐藏的输入,由click事件触发.这很有效,除了当我尝试听密码时,在fennec(移动版Firefox)上,我有一些奇怪的行为.

这是我用来听的功能keycode.

document.querySelectorAll('input')[0].addEventListener('keydown', handler);

function handler(e) {
  e.preventDefault();
  var k = (e.which) ? e.which : e.keyCode;
  document.getElementById('log').innerHTML = k;
  this.style.backgroundColor = "#FFAAFF";
}
Run Code Online (Sandbox Code Playgroud)
<input type="text" />
<span id="log"></span>
Run Code Online (Sandbox Code Playgroud)

  • 在Firefox for android (v34到v37)中,在用户键入返回之前不会触发.
    实际上,我发现如果输入的值不为空,那么它至少在加载时效果很好.所以我想到了一个像这样的解决方法:if(this.value=='')this.value='*'; 似乎工作但是如果你垃圾邮件它,退格键 没有被阻止,所以当输入被清除时,错误会回来:解决方法也不会解决.
    +这是一个丑陋的解决方法,我肯定会在其他浏览器中创建其他错误.

       
       document.querySelectorAll('input')[0].addEventListener('keydown', handler);
       
       function handler(e) {
         if(this.value=='')this.value='*';
         e.preventDefault();
         var k = (e.which) ? e.which : e.keyCode;
         document.getElementById('log').innerHTML = k;
         this.style.backgroundColor = "#FFAAFF";
       }
       
       
    Run Code Online (Sandbox Code Playgroud)
       
       <input type="text" value="*"/>
       <span …
    Run Code Online (Sandbox Code Playgroud)

html javascript android fennec firefox-os

11
推荐指数
1
解决办法
2708
查看次数