使用HTML 5画布构建的ASP .net签名控件不适用于Ipad [英] ASP .net signature control built using HTML 5 canvas does not work with Ipad

查看:69
本文介绍了使用HTML 5画布构建的ASP .net签名控件不适用于Ipad的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我使用链接中的示例创建了一个签名演示代码: -



使用画布构建签名控件 [ ^ ]
asp.net中的


。此示例在计算机上正常工作,但是当我从Ipad访问URL时,签名控件不起作用。请帮忙。





以下是代码: -



ASPX: -



Hi,

I have a created a demo code for signature using the example from the link :-

Building a Signature Control Using Canvas[^]

in asp .net. This example works fine on computer , but when I access the url from an Ipad the signature control does not work. Please help in this.


Below is the code :-

ASPX :-

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!doctype html>
<html>
<head>
    <title>Signature</title>
    <script src="signature.js" type="text/javascript"></script>
    <link href="signature.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
        function loaded() {
            var signature = new ns.SignatureControl({ containerId: 'container', callback: function () {
                alert('hello');
            }
            });
            signature.init();
        }

        window.addEventListener('DOMContentLoaded', loaded, false);
    </script>
</head>
<body>
    <div id="container">
        <h1>
            HI
        </h1>
         <asp:WebSignature id="WebSignature1" runat="server"></asp:WebSignature>
    </div>
</body>
</html>





JAV ascript: -





Javascript :-

(function (ns) {
    "use strict";

    ns.SignatureControl = function (options) {
        var containerId = options && options.canvasId || "container",
            callback = options && options.callback || {},
            label = options && options.label || "Signature",
            cWidth = options && options.width || "300px",
            cHeight = options && options.height || "300px",
            btnClearId,
            btnAcceptId,
            canvas,
            ctx;

        function initCotnrol() {
            createControlElements();
            wireButtonEvents();
            canvas = document.getElementById("signatureCanvas");
            canvas.addEventListener("mousedown", pointerDown, false);
            canvas.addEventListener("mouseup", pointerUp, false);
            ctx = canvas.getContext("2d");
        }

        function createControlElements() {
            var signatureArea = document.createElement("div"),
                labelDiv = document.createElement("div"),
                canvasDiv = document.createElement("div"),
                canvasElement = document.createElement("canvas"),
                buttonsContainer = document.createElement("div"),
                buttonClear = document.createElement("button"),
                buttonAccept = document.createElement("button");

            labelDiv.className = "signatureLabel";
            labelDiv.textContent = label;

            canvasElement.id = "signatureCanvas";
            canvasElement.clientWidth = cWidth;
            canvasElement.clientHeight = cHeight;
            canvasElement.style.border = "solid 2px black";

            buttonClear.id = "btnClear";
            buttonClear.textContent = "Clear";

            buttonAccept.id = "btnAccept";
            buttonAccept.textContent = "Accept";

            canvasDiv.appendChild(canvasElement);
            buttonsContainer.appendChild(buttonClear);
            buttonsContainer.appendChild(buttonAccept);

            signatureArea.className = "signatureArea";
            signatureArea.appendChild(labelDiv);
            signatureArea.appendChild(canvasDiv);
            signatureArea.appendChild(buttonsContainer);

            document.getElementById(containerId).appendChild(signatureArea);
        }

        function pointerDown(evt) {
            ctx.beginPath();
            ctx.moveTo(evt.offsetX, evt.offsetY);
            canvas.addEventListener("mousemove", paint, false);
        }

        function pointerUp(evt) {
            canvas.removeEventListener("mousemove", paint);
            paint(evt);
        }

        function paint(evt) {
            ctx.lineTo(evt.offsetX, evt.offsetY);
            ctx.stroke();
        }

        function wireButtonEvents() {
            var btnClear = document.getElementById("btnClear"),
                btnAccept = document.getElementById("btnAccept");
            btnClear.addEventListener("click", function () {
                ctx.clearRect(0, 0, canvas.width, canvas.height);
            }, false);
            btnAccept.addEventListener("click", function () {
                callback();
            }, false);
        }

        function getSignatureImage() {
            return ctx.getImageData(0, 0, canvas.width, canvas.height).data;
        }

        return {
            init: initCotnrol,
            getSignatureImage: getSignatureImage
        };
    }
})(this.ns = this.ns || {});





CSS: -





CSS :-

#signatureCanvas
{
    background-color: #fff;
}

#btnClear
{
    float: right;
    width: 88px;
    height: 32px;
    border: solid 2px #cacaca;
    background-color: #636363;
}

#btnAccept
{
    float: left;
    width: 88px;
    height: 32px;
    border: solid 2px #fff;
    background-color: #ff6600;
}

.signatureArea
{
    width: 300px;
    color: #ff6600;
}

.signatureArea div
{
    padding-left: 60px;
}



< br $>










谢谢,








Thanks,

推荐答案

这个控件肯定对你有用。我亲自将这个用于我的项目中。



http: //thomasjbradley.ca/lab/signature-pad/ [ ^ ]
This control will definitely useful for you. I have personally used this for few of my project.

http://thomasjbradley.ca/lab/signature-pad/[^]


它在ipad上不起作用,因为它使用了闪存的swf组件... Ipads不支持flash
It will not work on ipad because it used a swf component which is flash...Ipads do not support flash


这篇关于使用HTML 5画布构建的ASP .net签名控件不适用于Ipad的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆