为什么Cordova(PhoneGap)不从canvas.toDataURL()返回数据,而相同的代码在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

下面我有一段测试代码,它利用了SignaturePad JS库

这段代码在浏览器中运行(没有cordova引用)效果很好,但在cordova
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>