How does facebook detect when a link as been PASTED

前端 未结 8 1582
轮回少年
轮回少年 2020-12-16 04:45

Facebook\'s status update input (well, contenteditable div) detects links.

When typing a link it waits until the spacebar is pressed before fetching the URL.

8条回答
  •  一个人的身影
    2020-12-16 05:22

    I think the most reliable way to do this is to implement it on your own, for example like this:

    $(document).ready(function(){
        var ctrl = false;
      var pasted = 0;
      $("#paste").keydown(function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
            $("#console").val($("#console").val()+String(code)+",");
        if (!ctrl && code == 17){
            ctrl = true;
        }else{
            if(ctrl && code == 86){
            $(".paste>div")[0].innerHTML = "Pasted "+(++pasted)+"x";
          }
        }
      });
      $("#paste").keyup(function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 17){
            ctrl = false;
        }
      });
    });
    

    $(document).ready(function(){
    	var ctrl = false;
      var pasted = 0;
      $("#paste").keydown(function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
    		$("#console").val($("#console").val()+String(code)+",");
        if (!ctrl && code == 17){
        	ctrl = true;
        }else{
        	if(ctrl && code == 86){
          	$(".paste>div")[0].innerHTML = "Pasted "+(++pasted)+"x";
          }
        }
      });
      $("#paste").keyup(function(e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 17){
        	ctrl = false;
        }
      });
    });
    div.top {
      width: 100%;
      display: inline-block;
    }
    
    div.top>div {
      width: 50%;
      display: inline-block;
      float: left;
      padding: 0px 10px 0px 0px;
      box-sizing: border-box;
    }
    
    textarea {
      width: 100%;
      height: 100px;
      resize: none;
      box-sizing: border-box;
    }
    
    
    Try paste here:
    Console:
    Pasted:

提交回复
热议问题