Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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_Feedback - Fatal编程技术网

Javascript 如何存储与网页任何部分相关的用户反馈?

Javascript 如何存储与网页任何部分相关的用户反馈?,javascript,jquery,feedback,Javascript,Jquery,Feedback,我希望用户能够双击屏幕上的任何地方,以显示一个表单,允许提交有关该点的反馈 我可以想出两种解决方案: 存储X,Y坐标。必须排除这种情况,因为并非所有浏览器都支持X、Y坐标 使用Jquery将html实体的详尽列表绑定到dblClick事件,如下所示: $(document).ready(function() { $("p,label,input,textarea").bind("dblclick", function(e) { $("#feedback_form").show(); })

我希望用户能够双击屏幕上的任何地方,以显示一个表单,允许提交有关该点的反馈

我可以想出两种解决方案:

  • 存储X,Y坐标。必须排除这种情况,因为并非所有浏览器都支持X、Y坐标
  • 使用Jquery将html实体的详尽列表绑定到dblClick事件,如下所示:

    $(document).ready(function() {
    $("p,label,input,textarea").bind("dblclick", function(e) {
        $("#feedback_form").show();
    });
    
    }))

  • 因此,在上面的示例中,当双击任何p、标签、输入或文本区域时,将显示反馈表单(为了简单起见,我的示例中不包括传递双击项目ID的代码)

    因此,2并不完美,但它似乎可以满足对受支持html实体列表的任何反馈

    有没有我忽略的更简单的解决方案


    另外,如果我选择2,双击是使用此反馈表单的最佳方法,还是您会推荐其他事件?

    您应该能够编写/获取命中测试函数,以查看双击时鼠标光标下的DOM元素,然后将注释/反馈文本与所选元素的ID关联

    这假设所有DOM元素都有唯一的ID


    (而且你的用户知道他们可以做到这一点!)

    我建议不要对网站上的任何位置进行评论,而是允许对特定元素进行评论。例如,如果它是一个博客,你可以使用每个段落作为一个可以评论的元素。如果它是一个代码库,那么可以将注释添加到单独的代码行中


    看看是怎么做的。

    我希望您的大部分版面都使用和标记。正如Steven所建议的,拥有与每个块元素或任何其他作为网页组成部分的元素(可能是图像)关联的唯一id

    将onclick事件与block/layout元素关联,以打开另一个窗口或javascript弹出窗口,捕获元素id,并在弹出窗口上创建一个表单,用户可以在其中提交反馈


    我还建议甚至与所有这些元素关联的onmouseover,它会显示一个工具提示,指示用户可以留下关于布局小部件/元素的反馈。

    双击是不好的,因为在大多数浏览器中,您可以通过双击来选择单词


    取而代之的是,页面上应该有一些特殊的地方,你们可以点击这里给出反馈。请参阅Soviut的答案,以获得一个很好的示例。

    您可以这样做:

    您希望对其进行评论的块具有“可评论”类和id。
    下面的脚本是适用于W3C兼容浏览器的大纲,即需要使用attachEvent和全局事件对象。
    不会取消事件的传播,因此可评论块中的可评论块将每次触发一次事件。
    事件的默认操作也未取消,因此双击的文本仍将突出显示-也许您的对话框可能有“单击转义以取消”操作

    function CommentDialog() {
        //this is a fake CommentDialog object constructor
        this.display = function( id ) {
            alert( 'you want to comment on the block with id: '+id+', which is outlined in red' );
        } 
    }
    
    
    
    window.addEventListener( 'dblclick', function(e){ 
        var target = e.target;
        while( /commentable/.test( target.className ) == false ) {
            // if we've hit the body tag then bomb out
            if( target == document.body ) {
                return;
            }
            target = target.parentNode;
        }
        target.style.border = '1px solid red';
        var cmt = new CommentDialog();
        cmt.display( target.id );
     }, false );
    

    我有点喜欢第二种解决方案,但我不会将函数附加到某些html实体,而是附加到定义良好的div 比如:

    $(document).ready(function() {
        $("div .commentable").each().bind("dblclick", function(e) {
            $("#feedback_form").show();
    });
    });
    
    因此,您只需要将所有希望在
    中可注释的元素包装起来

    对于第一种解决方案,如果您希望在页面的每个位置都有反馈,而不仅仅是指定的元素,JQuery可以帮助您

    jQuery(document).ready(function(){
       $().click(function(e){
          alert(e.pageX +', '+ e.pageY);
       }); 
    })
    

    有关更多信息,请参阅。

    此页面在Opera中似乎不起作用。也许更好的链接是: