V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IDCFAN
V2EX  ›  反馈

V2EX 的点击在 textarea 里填入 [@用户名] 的功能,控制台报错,有大佬知道什么原因呢?

  •  
  •   IDCFAN · 2020-01-11 16:17:46 +08:00 · 3284 次点击
    这是一个创建于 1786 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想把这个功能扒下来,虽然扒下来了,使用起来也正常,但是有 JS 控制台调试有报错,看了 V2EX 官方也是一样的报错。强迫症不能忍呢,但是迫于又不懂 JS,所以来求大佬指点一下。

    扒下来的代码(能正常用)

    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    
    <script language="javascript">
    function moveEnd(t) {
    	t.focus(), t.setSelectionRange(-1, -1)
    }
    function replyOne(t) {
    	const e = $("#reply_content"), o = e.val(), n = "@" + t + " ";
    	let c = "";
    	o.length > 0 ? o != n && (c = o + "\n" + n) : c = n, e.focus(), e.val(c), moveEnd($("#reply_content"))
    }
    </script>
    
    <a href="#;" onclick="replyOne('V2 大佬');">@</a>
    <a href="#;" onclick="replyOne('V2 大神');">@</a>
    <textarea name="content" maxlength="10000" class="mll" id="reply_content" style="overflow: hidden; overflow-wrap: break-word; resize: none; height: 112px;"></textarea>
    

    控制台报错

    Uncaught TypeError: t.setSelectionRange is not a function
    at moveEnd (Untitled-3.html:7)
    at replyOne (Untitled-3.html:12)
    at HTMLAnchorElement.onclick (VM80 Untitled-3.html:17)
    
    10 条回复    2020-01-12 06:44:00 +08:00
    SingeeKing
        3
    SingeeKing  
       2020-01-11 16:36:07 +08:00   ❤️ 2
    所以这里顺呢 @livid 一下求修复
    Livid
        4
    Livid  
    MOD
       2020-01-11 18:01:33 +08:00
    @SingeeKing 感谢反馈。会在本周末内解决。

    cc @Girlphobia
    Livid
        5
    Livid  
    MOD
       2020-01-11 18:08:36 +08:00   ❤️ 1
    @SingeeKing @IDCFAN @Girlphobia

    是我写的 bug。

    最后那里 moveEnd 应该传进去的是一个 HTMLElement,但是现在代码里传了一个 jQuery object。所以如果那里改成 document.getElementById() 就解决了。

    已经在开发环境里验证。会在本周末部署这个修复。
    IDCFAN
        6
    IDCFAN  
    OP
       2020-01-11 18:09:45 +08:00
    @Livid 好的,周末后再来扒。
    Livid
        7
    Livid  
    MOD
       2020-01-11 18:13:41 +08:00
    @IDCFAN 具体来说,就是把这一行:

    moveEnd($("#reply_content"))

    改成:

    moveEnd(document.getElementById("reply_content"))

    就不会有那个报错了。
    IDCFAN
        8
    IDCFAN  
    OP
       2020-01-11 18:31:12 +08:00
    @Livid 哈哈,伸手党特此谢过,今天就能用上了。
    y0bcn
        9
    y0bcn  
       2020-01-11 21:39:04 +08:00 via Android
    其他平台用户发现 bug 是反馈一下,v2 用户发现 bug 想 fix 它😂
    Livid
        10
    Livid  
    MOD
       2020-01-12 06:44:00 +08:00
    @SingeeKing 这个问题的修复已经部署。再次感谢提醒。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6071 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:14 · PVG 11:14 · LAX 19:14 · JFK 22:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.