У меня есть тестовый фрагмент кода ниже, который использует библиотеку SignaturePad JS.
Этот код прекрасно работает в браузере (без ссылок на кордову), но в Cordova canvas.toDataURL()
ничего не возвращает. Я использую рабочий стол PhoneGap для разработки, и поэтому приложение cordova работает в браузере (кстати, тот же браузер, который возвращает правильный вывод при простом открытии файла html напрямую, без phonegap / cordova).
<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>
Пример вывода после подписания в окне браузера: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...
Вывод в cordova: ``
Я читал о некоторых людях, борющихся с toDataURL () в Cordova, но они Возможно, это связано с политиками CORS et c, но я не получаю никаких ошибок при использовании кода и не обращаюсь к внешним изображениям et c.