Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在画布中的可拖动对象上添加工具提示?_Javascript_Jquery_Html_Canvas_2d - Fatal编程技术网

Javascript 如何在画布中的可拖动对象上添加工具提示?

Javascript 如何在画布中的可拖动对象上添加工具提示?,javascript,jquery,html,canvas,2d,Javascript,Jquery,Html,Canvas,2d,在我的代码中,SVG被解析并绘制在画布上,orange1.png和green1.png图像也被绘制在SVG文件上。在这里,我可以缩放和平移画布,还可以通过JSON拖动绘制在画布上的图像 现在,我想在单击orange1.png和green1.png图像或将鼠标悬停在这些图像上时,在这些图像上添加工具提示 showTooltip函数用于显示那些图像上的工具提示Range1.png、green1.png clearTooltip功能用于清除工具提示 在更新的代码中,应在何处以及如何添加showTool

在我的代码中,SVG被解析并绘制在画布上,orange1.png和green1.png图像也被绘制在SVG文件上。在这里,我可以缩放和平移画布,还可以通过JSON拖动绘制在画布上的图像

现在,我想在单击orange1.png和green1.png图像或将鼠标悬停在这些图像上时,在这些图像上添加工具提示

showTooltip函数用于显示那些图像上的工具提示Range1.png、green1.png

clearTooltip功能用于清除工具提示

在更新的代码中,应在何处以及如何添加showTooltip和clearTooltip函数

在显示工具提示时,鼠标单击或鼠标悬停哪个选项更好

I tried some possibilities but I am missing something.

function showTooltip(x, y, index) {         
    var editedValue = [];           
    if (tooltip === null) {
        tooltip = document.createElement('div');
        tooltip.className = 'tooltip';              
        tooltip.style.left = (x) + 'px';
        tooltip.style.top = (y) + 'px';             
        tooltip.innerHTML = "<input type='text' id='generic_txt' value='"+dataJSON[index].tooltiptxt[0]+"' /> <input type='submit' id='generic_edit' value='Edit'>"     

        document.getElementsByTagName('body')[0].appendChild(tooltip);
    }           

    document.getElementById('generic_txt').setAttribute('disabled', 'disabled');    
    $("#generic_edit").click(function(){
        if(document.getElementById('generic_edit').value == "Edit"){
            document.getElementById('generic_txt').removeAttribute('disabled');
            document.getElementById('generic_txt').focus();
            document.getElementById('generic_edit').value = "Change";
        } else {
            document.getElementById('generic_txt').setAttribute('disabled', 'disabled');
            document.getElementById('generic_edit').value = "Edit";
            editedValue = $('#generic_txt').val();          
            dataJSON[index].tooltiptxt[0] = editedValue;  // important line         
        }
       return false;
    });         
}

function clearTooltip(doFade) {         
    if (tooltip !== null) {
        var fade = 1;
        function fadeOut() {
            tooltip.style.opacity = fade;
            fade -= 0.1;
            if (fade > 0) {
                setTimeout(fadeOut, 16);
            } else {
                remove();
            }
        }
        function remove() {
            document.getElementsByTagName('body')[0].removeChild(tooltip);
            tooltip = null;
        }
        if (doFade === true) {
            fadeOut();
            //$('.first_cancel').click(fadeOut());
        } else {
            remove();
        }
    }
}
下面是我更新的源代码


我想你可以试试这个:

<!DOCTYPE html>
<html>
<head>
<title>Canvas Links Example</title>
<script>  
    function OnLoad(){
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");      
        ctx.translate(0.5, 0.5);
        ctx.strokeStyle = "#5F7FA2";
        ctx.strokeRect(50, 50, 25, 25);
        var img = new Image();
        img.src = "http://www.cs.washington.edu/education/courses/csep576/05wi/projects/project4/web/artifact/liebling/average_face.gif";
        var img1 = new Image();
        img1.src = "E:\Very IMP Projects\WinService\SourceCode\MVC\BpmPresentation\Images\loading.gif";
        img.onload = function(){
        ctx.drawImage(img, 50, 50);
        canvas.addEventListener("mousemove", on_mousemove, false);
        canvas.addEventListener("click", on_click, false);
        Links.push(50 + ";" + 50 + ";" + 25 + ";" + 25 + ";" + "http://plus.google.com/");
        }        
        var Links = new Array();
        var hoverLink = "";         
        var canvas1 = document.getElementById("myCanvas1");
        var ctx1 = canvas1.getContext("2d");
        function on_mousemove (ev) {    
            var x, y;
            if (ev.layerX || ev.layerX == 0) { // For Firefox
                x = ev.layerX;
                y = ev.layerY;
            }
            for (var i = Links.length - 1; i >= 0; i--) {
                var params = new Array();
                params = Links[i].split(";");
                var linkX = parseInt(params[0]),
                    linkY = parseInt(params[1]),
                    linkWidth = parseInt(params[2]),
                    linkHeight = parseInt(params[3]),
                    linkHref = params[4];
                if (x >= linkX && x <= (linkX + linkWidth) && y >= linkY && y <= (linkY + linkHeight)){
                    document.body.style.cursor = "pointer";
                    hoverLink = linkHref;                 
                    ctx1.translate(0.5, 0.5);
                    ctx1.strokeStyle = "#5F7FA2";
                    canvas1.style.left = x + "px";
                    canvas1.style.top = (y+40) + "px";
                    ctx1.clearRect(0, 0, canvas1.width, canvas1.height);                    
                    var img1 = new Image();
                    img1.src = "E:\Very IMP Projects\WinService\SourceCode\MVC\BpmPresentation\Images\loading.gif";
                    img1.onload = function () {
                        ctx1.drawImage(img1, 50, 50);
                    }
                    break;
                }
                else {
                    document.body.style.cursor = "";
                    hoverLink = "";
                    canvas1.style.left = "-200px";
                }
            };
        }
        function on_click(e) {
            if (hoverLink) {               
                window.open(hoverLink);
                //window.location = hoverLink;      
            }
        }
    } 
</script> 
</head>
<body onload="OnLoad();">
<canvas id="myCanvas" width="450" height="250" style="border:1px solid #eee;">
Canvas is not supported in your browser ! :(  
</canvas>
<canvas id="myCanvas1" width="50" height="50" style="background-color:white;border:1px solid blue;position:absolute;left:-200px;top:100px;">
    </canvas>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Canvas Links Example</title>
<script>  
    function OnLoad(){
        var canvas = document.getElementById("myCanvas");
        var ctx = canvas.getContext("2d");      
        ctx.translate(0.5, 0.5);
        ctx.strokeStyle = "#5F7FA2";
        ctx.strokeRect(50, 50, 25, 25);
        var img = new Image();
        img.src = "http://www.cs.washington.edu/education/courses/csep576/05wi/projects/project4/web/artifact/liebling/average_face.gif";
        var img1 = new Image();
        img1.src = "E:\Very IMP Projects\WinService\SourceCode\MVC\BpmPresentation\Images\loading.gif";
        img.onload = function(){
        ctx.drawImage(img, 50, 50);
        canvas.addEventListener("mousemove", on_mousemove, false);
        canvas.addEventListener("click", on_click, false);
        Links.push(50 + ";" + 50 + ";" + 25 + ";" + 25 + ";" + "http://plus.google.com/");
        }        
        var Links = new Array();
        var hoverLink = "";         
        var canvas1 = document.getElementById("myCanvas1");
        var ctx1 = canvas1.getContext("2d");
        function on_mousemove (ev) {    
            var x, y;
            if (ev.layerX || ev.layerX == 0) { // For Firefox
                x = ev.layerX;
                y = ev.layerY;
            }
            for (var i = Links.length - 1; i >= 0; i--) {
                var params = new Array();
                params = Links[i].split(";");
                var linkX = parseInt(params[0]),
                    linkY = parseInt(params[1]),
                    linkWidth = parseInt(params[2]),
                    linkHeight = parseInt(params[3]),
                    linkHref = params[4];
                if (x >= linkX && x <= (linkX + linkWidth) && y >= linkY && y <= (linkY + linkHeight)){
                    document.body.style.cursor = "pointer";
                    hoverLink = linkHref;                 
                    ctx1.translate(0.5, 0.5);
                    ctx1.strokeStyle = "#5F7FA2";
                    canvas1.style.left = x + "px";
                    canvas1.style.top = (y+40) + "px";
                    ctx1.clearRect(0, 0, canvas1.width, canvas1.height);                    
                    var img1 = new Image();
                    img1.src = "E:\Very IMP Projects\WinService\SourceCode\MVC\BpmPresentation\Images\loading.gif";
                    img1.onload = function () {
                        ctx1.drawImage(img1, 50, 50);
                    }
                    break;
                }
                else {
                    document.body.style.cursor = "";
                    hoverLink = "";
                    canvas1.style.left = "-200px";
                }
            };
        }
        function on_click(e) {
            if (hoverLink) {               
                window.open(hoverLink);
                //window.location = hoverLink;      
            }
        }
    } 
</script> 
</head>
<body onload="OnLoad();">
<canvas id="myCanvas" width="450" height="250" style="border:1px solid #eee;">
Canvas is not supported in your browser ! :(  
</canvas>
<canvas id="myCanvas1" width="50" height="50" style="background-color:white;border:1px solid blue;position:absolute;left:-200px;top:100px;">
    </canvas>
</body>
</html>