为什么Cordova(PhoneGap)不从canvas.toDataURL()返回数据,而相同的代码在Cordova之外工作?
下面我有一段测试代码,它利用了SignaturePad JS库 这段代码在浏览器中运行(没有cordova引用)效果很好,但在cordova为什么Cordova(PhoneGap)不从canvas.toDataURL()返回数据,而相同的代码在Cordova之外工作?,cordova,canvas,phonegap,todataurl,Cordova,Canvas,Phonegap,Todataurl,下面我有一段测试代码,它利用了SignaturePad JS库 这段代码在浏览器中运行(没有cordova引用)效果很好,但在cordovacanvas中运行。toDataURL()不返回任何内容。我正在运行PhoneGap desktop进行开发,因此cordova应用程序正在浏览器中运行(顺便说一句,就是在没有PhoneGap/cordova的情况下直接打开html文件时返回正确输出的浏览器) 日志数据URL app.initialize(); 文件。添加的监听器(“deviceready
canvas中运行。toDataURL()
不返回任何内容。我正在运行PhoneGap desktop进行开发,因此cordova应用程序正在浏览器中运行(顺便说一句,就是在没有PhoneGap/cordova的情况下直接打开html文件时返回正确输出的浏览器)
日志数据URL
app.initialize();
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
函数ondevicerady(){
$(文档).ready(函数(){
var canv=$(“.testcanvas”);
css({边框:“1px纯黑“});
var sigPad=newsignaturepad(canv[0]);
$(“.test btn”)。单击(函数(){
console.log(canv[0].toDataURL());
});
});
}
在浏览器框中签名后的输出示例:data:image/png;base64,Ivborw0kgoaaaansuheuga…
以科尔多瓦为单位的输出:``
我曾读到一些人在Cordova中与toDataURL()斗争,但他们似乎与CORS策略等有关,但我在使用代码时没有收到任何错误,也没有访问外部图像等。我发现了错误。科尔多瓦一点问题都没有。这是因为我使用了Brave Broswer(基于Chrome的隐私浏览器)作为我的开发浏览器。Brave中似乎有什么东西(无声地…叹气)阻止canvas.toDataURL()从画布访问数据。 Chrome和Firefox运行良好
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta
name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"
/>
</head>
<body>
<div class="app">
<canvas class="test-canvas"></canvas>
<button class="test-btn">Log DataURL</button>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"
type="text/javascript"
></script>
<script src="https://cdn.jsdelivr.net/npm/signature_pad@2.3.2/dist/signature_pad.min.js"></script>
<script type="text/javascript">
app.initialize();
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
$(document).ready(function() {
var canv = $(".test-canvas");
canv.css({ border: "1px solid black" });
var sigPad = new SignaturePad(canv[0]);
$(".test-btn").click(function() {
console.log(canv[0].toDataURL());
});
});
}
</script>
</body>
</html>