在我的代码中,程序根据用户输入的文本执行某些操作.我的代码看起来像:
switch (name) {
case text1: {
//blah
break;
}
case text2: {
//blah
break;
}
case text3: {
//blah
break;
}
case text4: {
//blah
break;
}
Run Code Online (Sandbox Code Playgroud)
然而,案件里面的代码text1和text4是一样的.因此,我想知道是否有可能实现类似的东西
case text1||text4: {
//blah
break;
}
Run Code Online (Sandbox Code Playgroud)
我知道||运算符不会在case语句中工作,但是我可以使用类似的东西.
在Internet Explorer中,我可以使用clipboardData对象来访问剪贴板.我怎样才能在FireFox,Safari和/或Chrome中执行此操作?
以下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) 您好我在IE11中收到错误消息,但在Chrome中没有错误消息是:
Script1002语法错误
我的代码如下
var selectedRoles = vm.roles.filter(x => x.id === role.id);
Run Code Online (Sandbox Code Playgroud)
错误的行号和列号表明它是=> IE11不喜欢的箭头函数.就像我说的Chrome和Edge一样好用
好吧,我需要一些关于将.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 / ...感谢您的阅读/帮助
我想使用fabric.js将Canvas下载为PNG.在下载时我想缩放图像.所以我使用multiplier了toDataURL()函数的属性.但我得到了失败 - 网络错误
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) 我正在开展一个项目,我想:
我已经能够通过调整这个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对象分成一个单元,可以在媒体元素中记录或渲染."
运行此代码然后"保存"您将获得图像差异.解决这个问题的任何解决方案?
代码示例
$(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,第二个块是图像的结果,你会看到差异)
我正在开发一个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) 我正试图通过跨浏览器的方式来倾听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)javascript ×8
canvas ×3
html ×3
android ×1
blob ×1
clipboard ×1
dom ×1
dom-events ×1
ecmascript-6 ×1
fabricjs ×1
fennec ×1
firefox-os ×1
html2canvas ×1
java ×1
jestjs ×1
jquery ×1
mediastream ×1
png ×1
reactjs ×1
screenshot ×1
svg ×1
testing ×1
voice ×1