必须登录才能发言。

  • 76
    @Ta 2023-10-15
    /

    @兲蛋,如果在点击表情符号时出现两行相同的表情符号,可能是因为事件处理程序绑定不当,或者在页面加载时,事件处理程序被多次绑定。这会导致多次触发点击事件,从而在文本框中插入重复的文本。为了解决这个问题,您可以采取以下措施:

    1. 检查事件绑定:确保事件处理程序仅绑定一次。使用$(selector).off('click').on('click', function() { ... });来确保只有一个点击事件处理程序绑定在表情符号上。

    2. 使用事件代理:如果表情符号是动态添加的,您可以使用事件代理,将事件处理程序绑定到包含表情符号的父元素上,以确保只有一个事件处理程序。例如,如果表情符号的容器具有ID为face,您可以这样做:

      $('#face').on('click', 'img', function () {
          var face = "{" +  $(this).attr("title") + "}";
          insertText(document.getElementById("content"), face);
      });
      
    3. 防止事件冒泡:确保事件不会冒泡到更高级的元素。您可以在点击事件处理程序中使用event.stopPropagation()来阻止事件冒泡。

    如果您提供更多代码或详细信息,我可以提供更具体的建议来解决问题。

  • 75
    @Ta 2023-10-15
    /
    @ChatGPT,为什么会显示两行一样的表情
  • 74
    @Ta 2023-10-15
    /

    @兲蛋,这段代码是一个JavaScript脚本,使用jQuery库来实现一种功能,即在文本框或文本区域中插入表情符号。让我解释代码的主要部分:

    1. function insertText(obj, str) 函数:这个函数与之前提供的代码片段相同,用于将文本插入到文本框或文本区域中,这里的 obj 代表目标文本框,str 代表要插入的文本。

    2. $(document).ready(function () { ... });:这是jQuery的$(document).ready()函数,用于在文档加载完成后执行一些操作。它确保在DOM完全加载后再执行脚本。

    3. $("#content").after('...');:这行代码找到ID为'content'的元素,通常是一个文本框或文本区域,然后在它后面插入了一组表情符号的HTML。这将在文本框下方插入表情符号。

    4. $('#face img').click(function () { ... });:这行代码选择ID为'face'下的所有<img>标签,并为它们添加了一个点击事件处理程序。当用户点击任何一个表情符号时,会触发这个事件处理程序。

    5. var face = "{" + $(this).attr("title") + "}";:在点击事件处理程序中,它获取被点击表情符号的title属性的值,并将其存储在变量 face 中。然后,它将表情符号文本包装在大括号中,形成类似于{表情}的文本。

    6. insertText(document.getElementById("content"), face);:最后,它使用之前定义的 insertText 函数将包含表情符号的文本插入到ID为'content'的文本框或文本区域中,这样用户就可以在文本框中插入所选的表情符号。

    这个代码片段允许用户点击表情符号,以将它们插入到文本框中,这在一些社交媒体或论坛等应用中很常见,以丰富文本输入。如果您有任何具体问题或需要更多帮助,请随时提问。

  • 73
    @Ta 2023-10-15
    /
    @ChatGPT,<script>
    function insertText(obj, str) {  
        if (document.selection) {  
            var sel = document.selection.createRange();  
            sel.text = str;  
        } else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {  
            var startPos = obj.selectionStart,  
                endPos = obj.selectionEnd,  
                cursorPos = startPos,  
                tmpStr = obj.value;  
            obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);  
            cursorPos += str.length;  
            obj.selectionStart = obj.selectionEnd = cursorPos;  
        } else {  
            obj.value += str;  
        }  
    }
    $(document).ready(function () {
      $("#content").after('<p id="face"><img title="冷" src="/tpl/classic/img/face/e586b7.gif" /><img title="勉强" src="/tpl/classic/img/face/e58b89e5bcba.gif" /><img title="吐舌" src="/tpl/classic/img/face/e59090e8888c.gif" /><img title="吐" src="/tpl/classic/img/face/e59090.gif" /><img title="呵呵" src="/tpl/classic/img/face/e591b5e591b5.gif" /><img title="呼" src="/tpl/classic/img/face/e591bc.gif" /><img title="咦" src="/tpl/classic/img/face/e592a6.gif" /><img title="哈哈" src="/tpl/classic/img/face/e59388e59388.gif" /><img title="啊" src="/tpl/classic/img/face/e5958a.gif" /><img title="喷" src="/tpl/classic/img/face/e596b7.gif" /><img title="太开心" src="/tpl/classic/img/face/e5a4aae5bc80e5bf83.gif" /><img title="委屈" src="/tpl/classic/img/face/e5a794e5b188.gif" /><img title="开心" src="/tpl/classic/img/face/e5bc80e5bf83.gif" /><img title="怒" src="/tpl/classic/img/face/e68092.gif" /><img title="惊哭" src="/tpl/classic/img/face/e6838ae593ad.gif" /><img title="惊讶" src="/tpl/classic/img/face/e6838ae8aeb6.gif" /><img title="汗" src="/tpl/classic/img/face/e6b197.gif" /><img title="泪" src="/tpl/classic/img/face/e6b3aa.gif" /><img title="滑稽" src="/tpl/classic/img/face/e6bb91e7a8bd.gif" /><img title="狂汗" src="/tpl/classic/img/face/e78b82e6b197.gif" /><img title="疑问" src="/tpl/classic/img/face/e79691e997ae.gif" /><img title="真棒" src="/tpl/classic/img/face/e79c9fe6a392.gif" /><img title="睡觉" src="/tpl/classic/img/face/e79da1e8a789.gif" /><img title="笑眼" src="/tpl/classic/img/face/e7ac91e79cbc.gif" /><img title="花心" src="/tpl/classic/img/face/e88ab1e5bf83.gif" /><img title="鄙视" src="/tpl/classic/img/face/e98499e8a786.gif" /><img title="酷" src="/tpl/classic/img/face/e985b7.gif" /><img title="钱" src="/tpl/classic/img/face/e992b1.gif" /><img title="阴险" src="/tpl/classic/img/face/e998b4e999a9.gif" /><img title="黑线" src="/tpl/classic/img/face/e9bb91e7babf.gif" /><img title="不高兴" src="/tpl/classic/img/face/e4b88de9ab98e585b4.gif" /><img title="乖" src="/tpl/classic/img/face/e4b996.gif" /><img title="狗头" src="/tpl/classic/img/face/e78b97e5a4b4.gif" /><img title="回头看" src="/tpl/classic/img/face/e59b9ee5a4b4e79c8b.gif" /><img title="捂脸" src="/tpl/classic/img/face/e68d82e884b8.gif" /></p>');
      $('#face img').click(function () {
        var face = "{" +  $(this).attr("title") + "}";
        insertText(document.getElementById("content"), face);
      });
    });
    </script>
  • 72
    @Ta 2023-10-15
    /
    发言待审核,仅管理员和作者本人可见。
  • 71
    @Ta 2023-10-15
    /

    @ChatGPT 4,还是没有效果

  • 70
    @Ta 2023-10-15
    /

    [4] @上善若水,如果allow hosts参数没有生效,您可以尝试其他方式来限制连接到Samba共享的计算机。一种方法是使用hosts allow参数并指定计算机名,另一种方法是通过Samba中的hosts equiv来限制计算机名。以下是两种方法:

    方法1:使用hosts allow参数限制计算机名

    1. 打开Samba配置文件:

      sudo nano /etc/samba/smb.conf
      
    2. 找到或创建您的共享部分。

    3. 在您的共享部分下添加hosts allow参数,并指定计算机名:

      [myshare]
      comment = My Share
      path = /path/to/shared/folder
      browseable = yes
      read only = no
      valid users = yourusername
      hosts allow = pc123
      

      这将仅允许计算机名为"pc123"的计算机连接到共享。

    4. 保存文件并退出文本编辑器。

    5. 重新启动Samba服务以应用更改:

      sudo systemctl restart smbd
      

    方法2:使用hosts equiv参数限制计算机名

    1. 打开Samba配置文件:

      sudo nano /etc/samba/smb.conf
      
    2. 找到或创建您的共享部分。

    3. 在您的共享部分下添加hosts equiv参数,并指定计算机名:

      [myshare]
      comment = My Share
      path = /path/to/shared/folder
      browseable = yes
      read only = no
      valid users = yourusername
      hosts equiv = /etc/hosts.samba
      
    4. 创建一个/etc/hosts.samba文件,并在其中列出允许连接的计算机名:

      pc123
      

      这将仅允许计算机名为"pc123"的计算机连接到共享。

    5. 保存文件并退出文本编辑器。

    6. 重新启动Samba服务以应用更改:

      sudo systemctl restart smbd
      

    请确保在编辑Samba配置文件或创建/etc/hosts.samba文件时没有语法错误。这两种方法应该能够限制只有特定计算机名的计算机能够连接到Samba共享。如果仍然遇到问题,请检查配置文件中是否有其它规则或限制。

  • 69
    @Ta 2023-10-15
    /

    @ChatGPT 4,好像没有效果,还有别的规则吗

  • 68
    @Ta 2023-10-15
    /

    [4] @上善若水,要配置Samba以仅允许计算机名为"pc123"的电脑连接,您可以使用allow hosts参数。下面是如何配置Samba共享以实现这一目标的步骤:

    1. 打开Samba配置文件:

      使用文本编辑器,打开Samba配置文件。默认情况下,它位于/etc/samba/smb.conf

      sudo nano /etc/samba/smb.conf
      
    2. 找到或创建您的共享部分。例如:

      [myshare]
      comment = My Share
      path = /path/to/shared/folder
      browseable = yes
      read only = no
      valid users = yourusername
      
    3. 在您的共享部分下添加allow hosts参数:

      [myshare]
      comment = My Share
      path = /path/to/shared/folder
      browseable = yes
      read only = no
      valid users = yourusername
      allow hosts = pc123
      

      这将仅允许计算机名为"pc123"的计算机连接到共享。

    4. 保存文件并退出文本编辑器。

    5. 重新启动Samba服务以应用更改:

      sudo systemctl restart smbd
      

    现在,只有计算机名为"pc123"的计算机将被允许连接到您的Samba共享。请确保根据您的实际需求进行适当的自定义和配置。

  • 67
    @Ta 2023-10-15
    /

    @ChatGPT 4,仅允许计算机名为pc123的电脑连接该怎么配置

  • 66
    @Ta 2023-10-15
    /

    [4] @上善若水,除了hosts allowhosts deny参数,您还可以使用其他参数来控制哪些计算机可以连接到Samba共享。其中一个常用的参数是allow hosts,它允许您指定允许连接的计算机名或IP地址。

    以下是一些相关参数:

    1. allow hosts:此参数允许您指定要允许的计算机名或IP地址。您可以使用逗号分隔的列表来列出多个计算机名或IP地址。例如:

      allow hosts = 192.168.1.10, 192.168.1.20
      
    2. deny hosts:与allow hosts相对应,此参数用于指定拒绝连接的计算机名或IP地址。与hosts deny的作用类似。

    3. valid users:此参数允许您指定哪些用户可以连接到共享。只有指定的用户将被允许连接。

    4. invalid users:与valid users相对应,此参数用于指定不允许连接的用户。

    5. hosts allow:此参数是更具体的允许连接的机制,允许使用CIDR标记的子网掩码。例如:

      hosts allow = 192.168.1.0/24
      
    6. hosts deny:与hosts allow相对应,用于指定拒绝连接的计算机名或IP地址。

    这些参数可以根据您的需求进行组合,以确保只有特定的计算机名或IP地址可以连接到共享。请根据您的需求选择适当的参数,并根据Samba配置文件的要求进行自定义。

  • 65
    @Ta 2023-10-15
    /

    @ChatGPT 4,除了这些参数还有哪些参数有只允许符合添加的计算机名连接

  • 64
    @Ta 2023-10-15
    /
    发言待审核,仅管理员和作者本人可见。
  • 63
    @Ta 2023-10-15
    /

    @ChatGPT 4,ubuntu安装samba后怎么创建一个只有符合条件的电脑连接

  • 62
    @Ta 2023-10-15
    /

    @兲蛋,您提供的代码片段是一段JavaScript代码,它包括两部分操作。让我分解和解释它:

    1. document.getElementById('content').focus();:这部分代码使用document.getElementById来获取具有id为'content'的HTML元素,通常是一个表单输入元素,如文本框或文本区域。然后,使用.focus()方法将焦点设置到这个元素上,这意味着文本框或文本区域将获得焦点,用户可以在其中输入文本。这通常用于将用户的焦点自动定位到某个输入字段,以便他们可以立即开始输入,而无需手动点击它。

    2. return false;:在JavaScript事件处理函数中,return false;用于阻止默认行为或事件冒泡。在您提供的上下文中,它似乎没有与之前的代码片段相关联,因此缺少上下文,很难提供更多信息。通常,return false; 用于防止默认的表单提交或超链接点击事件,从而防止浏览器跳转到新页面。

    如果您能提供更多上下文或详细信息,我将能够提供更具体的帮助。

  • 61
    @Ta 2023-10-15
    /

    @ChatGPT,document.getElementById('content').focus();return false"

  • 60
    @Ta 2023-10-15
    /

    @兲蛋,这段JavaScript代码监听窗口的resize事件,并根据窗口高度的变化来调整页面内容的最小高度。它的作用是确保在窗口高度变化时,页面内容的高度不会变得太小,以避免出现布局问题。下面是这段代码的解释:

    1. var windowHeight = window.innerHeight;:这一行代码用于获取当前窗口的高度,并将其存储在windowHeight变量中。

    2. window.addEventListener('resize', function() {...});:这段代码添加了一个窗口大小变化的事件监听器。当窗口的大小发生变化时,将触发事件处理函数。

    3. 事件处理函数:事件处理函数包括以下几个步骤:

      a. if (window.innerHeight === windowHeight) { return; }:在事件处理函数开始时,它首先检查窗口的新高度是否与之前存储的windowHeight相同。如果新高度与旧高度相同,说明窗口的宽度发生了变化,但高度没有变化,因此不需要进行进一步的处理,直接返回。

      b. document.body.style.minHeight = windowHeight + 'px';:如果窗口的高度发生了变化,将document.bodyminHeight属性设置为之前获取的窗口高度,以确保页面的最小高度不会小于窗口的高度。这可以防止页面内容过于拥挤或重叠。

      c. setTimeout(function() {...}, 100);:通过setTimeout函数设置一个定时器,延迟100毫秒后执行。在这个定时器内,将document.bodyminHeight属性重新设置为'auto',以恢复页面的正常布局。这是为了在窗口大小变化后,允许浏览器有足够的时间来重新渲染页面,然后再将最小高度设置为'auto',以确保页面的布局不会受到限制。

    总之,这段代码用于处理窗口高度变化时的页面布局问题,以确保页面内容能够适应不同窗口高度的变化。

  • 59
    @Ta 2023-10-15
    /

    @ChatGPT,<script>
    var windowHeight = window.innerHeight;

      window.addEventListener('resize', function() {
        if (window.innerHeight === windowHeight) {
          return;
        }
    
        document.body.style.minHeight = windowHeight + 'px';
    
        setTimeout(function() {
          document.body.style.minHeight = 'auto';
        }, 100);
      });
    &lt;/script>
  • 58
    @Ta 2023-10-15
    /

    @兲蛋,这是一个JavaScript脚本,用于在编辑框中的光标位置插入文本和更改指定对象的颜色。具体来说,它包括两个函数:

    1. hu60_insert_text(obj, str) 函数用于将文本插入到编辑框中光标所在的位置。这个函数通过检查浏览器的类型来实现不同的方式,包括使用document.selectionobj.selectionStartobj.selectionEnd属性。

    2. atAdd(uid, that) 函数用于插入一个带有@标记的文本,并且更改指定对象(that参数)的文本颜色为橙色。它首先更改that对象的文本颜色,然后使用hu60_insert_text函数在编辑框中插入@标记后的文本。

    通常,这些函数用于处理用户与文本编辑框的交互,例如在社交媒体或论坛中插入用户标记或其他功能。要使用这些函数,您需要确保在HTML中有一个编辑框(textarea或input),并将这些函数与相关的HTML元素(例如按钮或链接)关联起来。例如,您可以在点击一个按钮时调用atAdd(uid, this),其中uid是用户标识,this是按钮本身的引用。

    这个脚本基于不同的浏览器兼容性进行了检查,并根据不同的情况采取了不同的插入文本的方法,以确保在各种浏览器中正常工作。

  • 57
    @Ta 2023-10-15
    /

    @ChatGPT,<script>
    / 将内容插入编辑框obj中光标所在的位置 /
    / 感谢 @666 (uid: 16651) 编写了该函数 /
    / https://hu60.net/q.php/bbs.topic.86665.html /
    function hu60_insert_text(obj, str) {
    if (document.selection) {
    var sel = document.selection.createRange();
    sel.text = str;
    } else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') {
    var startPos = obj.selectionStart,
    endPos = obj.selectionEnd,
    cursorPos = startPos,
    tmpStr = obj.value;
    obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length);
    cursorPos += str.length;
    obj.selectionStart = obj.selectionEnd = cursorPos;
    } else {
    obj.value += str;
    }
    }

    /* 将<a class="userat" href="#" onclick="atAdd('标记插入光标位置',this);return false">@</a><a class="userinfo" href="user.info.0.html">标记插入光标位置</a>,并使指定对象变色 */
    function atAdd(uid, that) {
        that.style.color = "#FFA500";
        var nr = document.getElementById("content");
        hu60_insert_text(nr, '@'+uid+',');
    }

    </script>