写作绅士,读作丧尸 X岛揭示板
顺猴者昌 逆猴者亡 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 官方公众号:【X岛揭示板】 官方微博: 【@X岛极速版】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

No.67024789 - X岛-EX - 综合版1


回应模式
No.67024789
名 称
E-mail
标题
颜文字
正文
附加图片
• 重新出发
• 关于X岛与A岛关系的说明:>>No.50000002置顶串
• 上手前建议您阅读:>>No.50000001【全岛总版规】
• 我们建议您开串时抛弃任何非必要性的身份标签,直接进入话题,否则您可能将面临不友善态度
• 综合版为综合性版块,请优先选择各关联性强分版。
• 工作考试及投资相关请至社畜(校园)版,好物推荐/购物拼团请转买买买版,手机及装机咨询请转数码版,无公众讨论意义及记录请转日记版
• 全岛禁止违法违规话题以及晒交配,请尊重他人的同时尊重自己。
• 特殊事务可于版务版块发串,私信官方微博@X岛揭示板,或邮件联系help@nmbxd.com • 客户端下载地址:https://app.nmbxd.com

收起 查看大图 向左旋转 向右旋转
X岛-EX 网页端增强,移动端般的浏览体验 2025-09-15(一)09:17:34 ID:NMDJxCc [举报] [订阅] [只看PO] No.67024789 [回应] 管理
X岛-EX:网页端增强,移动端般的浏览体验
0人瞩目0人期待的X岛-EX更新啦,前情提要:
>>No.66369234
如你所见,这是一个适配网页端[**X岛揭示板**](https://www.nmbxd1.com/)的油猴脚本,开发目的即为“增强网页端,赋予其移动端般的浏览体验”。
脚本下载链接:https://greasyfork.org/zh-CN/scripts/531005-x%E5%B2%9B-ex
Tips 无名氏 2099-01-01 00:00:01 ID:Tips超级公民 [举报] No.9999999 管理
发芽的洪! ︵ᵟຶ
( `д´)ジ
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2025-10-26(日)14:56:38 ID:NMDJxCc (PO主) [举报] No.67301852 管理
>>No.67301634
360现在也是谷歌内核吧,我个人不太喜欢360系,更建议使用edge/谷歌,这两个应该都有办法开IE兼容模式( ´_ゝ`)旦
另外肥哥你要的回复浮窗拖动以及输入框宽度调节明天更新。
无标题 无名氏 2025-10-26(日)15:38:40 ID:6vWOIld [举报] No.67302012 管理
>>No.67301852
赞美( ゚∀゚)( ゚∀゚)我早想换包括浏览器在内的一批软件了,但电脑零碎太多了拖着拖着就摆了
无标题 无名氏 2025-10-26(日)15:51:12 ID:NMDJxCc (PO主) [举报] No.67302066 管理
>>No.67302012
积重难返是这样( ;´д`)我一直想重装电脑,拖了两三年了。
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2025-10-26(日)22:26:45 ID:fSWxzzu [举报] No.67304545 管理
>>No.67301274
非常感谢PO的建议,颜文字问题我测试了一下是第一个功能颜文字光标的问题

献上jp
无标题 无名氏 2025-10-26(日)23:07:45 ID:NMDJxCc (PO主) [举报] No.67304826 管理
>>No.67304545
这个也加入TODOlist吧( ´_ゝ`)毕竟目前不是个例,如果接下来更新提及这方面的修改,请肥哥到时候再看看还会不会出现。
收起 查看大图 向左旋转 向右旋转
2.0.5 更新 unvcode+侧边栏优化 2025-10-27(一)08:45:41 ID:NMDJxCc (PO主) [举报] No.67306561 管理
2.0.5 更新
更新了一个不可明说的功能,修复若干小问题,部分功能优化,添加部分颜文字。
新增:
1.新增来自https://github.com/RimoChan/unvcode的unvcode,以及https://wordsaway.krytro.com/simple.html的零宽空格,具体效果请参照网页说明。
2. 新增来自>>No.67263335 acVMxuv肥哥的“侧边栏优化(即自动收起侧边栏菜单)“(https://greasyfork.org/zh-CN/scripts/553143-x%E5%B2%9B%E4%BC%98%E5%8C%96%E5%B2%9B-%E4%BE%A7%E8%BE%B9%E6%A0%8F%E4%BC%98%E5%8C%96%E7%89%88)。

修复:
1.修复本该在2.0.4.2解决的“已更新串在过去打开的末页触底局部刷新后没有自动无缝加载最新页面”的问题。
2.修复“添加图片控件“在无缝翻页新页面、引用浮窗、预览框中不生效、错误生效的问题。
3.修复无缝翻页在“速报2“页面无限下翻的问题。
4.修复“引用格式拓展“在预览框中渲染有误的问题。

优化:
1.为发送消息后的局部刷新添加末页检测,如果消息实际发送到新的页面,会同时无缝加载最新页。
2.预览框可同时预览输入的标题与名称。
3.支持回复浮窗与引用浮窗的连续拖动,并为回复浮窗添加复位按钮。
4.回复浮窗宽度可随着文本输入框的宽度调节而同步变化。
无标题 无名氏 2025-10-27(一)08:46:17 ID:NMDJxCc (PO主) [举报] No.67306564 管理
>>No.67306561
百度网盘还是这个 ゚∀゚)σ >>No.67025618
无标题 无名氏 2025-10-28(二)19:32:30 ID:6IsBOYz [举报] No.67316429 管理
>>No.67306561
测试效果良好,感谢(=゚ω゚)=
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2025-10-31(五)19:40:37 ID:fSWxzzu [举报] No.67334104 管理
双倍颜文字的问题解决了!
赞美NMDJxCc
JP
无标题 无名氏 2025-10-31(五)23:02:40 ID:NMDJxCc (PO主) [举报] No.67335490 管理
>>No.67334104
啊,肥哥不是把颜文字光标位置插入先关掉了嘛( ゚∀。)前两天我先改了一下但还没发也不知道对不对>>No.67313272( ´_っ`)还加了一点新功能>>No.67316296,肥哥到时候再看看呢。
无标题 无名氏 2025-11-01(六)16:51:54 ID:fSWxzzu [举报] No.67339184 管理
>>No.67335490
是我水母了
( ゚∀。)
川川川
收起 查看大图 向左旋转 向右旋转
2.0.6更新 快捷键新增+布局优化 2025-11-03(一)09:42:03 ID:NMDJxCc (PO主) [举报] No.67350499 管理
2.0.6更新
优化 系统稳定性
修复 部分场景偶现异常问题

新增:
1.快捷键新增:
CTRL+enter全局唤出回复浮窗;
CTRL+\在回复浮窗中打开切饼选项,enter选择;
CTRL+/打开颜文字选择面板;
WASD/↑←↓→定位颜文字面板中位置,enter/空格选择。

修复:
1.*尝试*修复选择颜文字后实际输入两次的问题,修复效果待反馈。
2.修复2.0.5未生效的“为发送消息后的局部刷新添加末页检测,如果消息实际发送到新的页面,会同时无缝加载最新页”。
3.修复板块页无缝翻页后无法从串外点击收起长串的问题。
4.修复板块页内存在被关键词屏蔽回复的串未作用“收起板块页长串”功能的问题。

优化:
1.优化布局,限制消息容器在页面展示的宽度,避免因长链接导致消息溢出浏览器边界外。
2.优化原图与图片控件功能,跟随布局优化的修改同步限制原图展示宽度。
3.限制预览框中插入图片在未展开时显示的宽度。
4.使用esc关闭回复浮窗时,优先关闭颜文字面板,然后关闭回复浮窗。
5.消息内容为“0”时自动添加零宽空格以规避“没有上传文件的时候,必须填写内容”的发送错误。
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2025-11-06(四)20:59:01 ID:fSWxzzu [举报] No.67374475 管理
更新好耶
但双倍颜文字还是没有解决|ー` )
以及这个折叠侧边栏的判定框太小了,还是改大一点吧,至少要扩大到浏览器边缘
゚∀゚)σJP献上
无标题 无名氏 2025-11-06(四)21:01:09 ID:gcky0tX [举报] No.67374488 管理
(´゚Д゚`)bbbbbb
收起 查看大图 向左旋转 向右旋转
无标题 无名氏 2025-11-07(五)19:25:40 ID:NMDJxCc (PO主) [举报] No.67380565 管理
>>No.67374475
那双倍颜文字这个问题可能我不太能解决了(;´ヮ`)7肥哥可以试着把“initInsertAtCaret(); // 功能 1:颜文字插入光标处”这部分代码交给ai判断一下是可能什么情况,然后让他们修改一下试试,这样测试起来比较方便,如果有效的话可以发在串里我来更新一下。
侧边栏收起这部分是从肥哥代码里直接复制来的啦,触发区域默认宽度20px可能确实有点窄了,下版本i可以改成100来的。代码里triggerZone.style.width就是宽度的部分,100/150的触发位置大概是图里这样。
无标题 无名氏 2025-11-08(六)05:26:42 ID:fSWxzzu [举报] No.67383244 管理
AI改了一下就好了

function initInsertAtCaret() {
const SELECTOR = '#h-emot-select';
const TA_SELECTOR = 'textarea.h-post-form-textarea[name="content"]';

document.querySelectorAll(SELECTOR).forEach(select => {
if (select.dataset.kaoBound === '1') return;
select.dataset.kaoBound = '1';

const form = select.closest('form');
const textarea = form ? form.querySelector(TA_SELECTOR) : null;
if (!textarea) return;

let lastStart = 0;
let lastEnd = 0;

// 记录光标位置
const remember = () => {
lastStart = textarea.selectionStart ?? lastStart;
lastEnd = textarea.selectionEnd ?? lastEnd;
};

['keyup', 'mouseup', 'select', 'input', 'focus', 'blur'].forEach(ev =>
textarea.addEventListener(ev, remember, true)
);

// 只在 select 上监听 focus 相关事件来记录位置
['focus', 'mousedown'].forEach(ev =>
select.addEventListener(ev, remember, true)
);

// 防抖保护
let isInserting = false;

// 统一使用 input 事件来处理插入
select.addEventListener('input', function handleInsert(e) {
// 第一时间阻止所有传播
e.stopImmediatePropagation();
e.preventDefault();
e.stopPropagation();

// 防抖检查
if (isInserting) return;

const val = select.value;
if (!val) return;

isInserting = true;

insertAtCaret(textarea, val, lastStart, lastEnd);

// 延迟重置选择器和解除防抖
setTimeout(() => {
select.value = '';
isInserting = false;
}, 50);

textarea.focus();
}, true); // 捕获阶段

// 移除 change 事件的监听,避免重复触发
select.addEventListener('change', function(e) {
e.stopImmediatePropagation();
e.preventDefault();
e.stopPropagation();
}, true);

function insertAtCaret(textarea, text, selStart, selEnd) {
// 记录插入前的滚动位置
const prevScrollTop = textarea.scrollTop;

// 确定插入位置
let start = Number.isInteger(selStart) ? selStart : textarea.selectionStart;
let end = Number.isInteger(selEnd) ? selEnd : textarea.selectionEnd;
if (!Number.isInteger(start) || !Number.isInteger(end)) {
start = end = textarea.value.length;
}

// 拼接新内容
const before = textarea.value.slice(0, start);
const after = textarea.value.slice(end);
textarea.value = before + text + after;

// 插入后的光标位置
const newPos = start + text.length;

// 关键:重新 focus 并设置光标位置
textarea.focus();
textarea.setSelectionRange(newPos, newPos);

// 延迟触发 input 事件,避免与原生逻辑冲突
setTimeout(() => {
textarea.dispatchEvent(new Event('input', { bubbles: true }));
}, 0);

// 恢复滚动条位置
textarea.scrollTop = prevScrollTop;

// 更新记忆位置
lastStart = lastEnd = newPos;
}
});
}
无标题 无名氏 2025-11-08(六)05:29:13 ID:fSWxzzu [举报] No.67383246 管理
空格改成全角

function initInsertAtCaret() {
    const SELECTOR = '#h-emot-select';
    const TA_SELECTOR = 'textarea.h-post-form-textarea[name="content"]';

    document.querySelectorAll(SELECTOR).forEach(select => {
        if (select.dataset.kaoBound === '1') return;
        select.dataset.kaoBound = '1';

        const form = select.closest('form');
        const textarea = form ? form.querySelector(TA_SELECTOR) : null;
        if (!textarea) return;

        let lastStart = 0;
        let lastEnd = 0;

        // 记录光标位置
        const remember = () => {
            lastStart = textarea.selectionStart ?? lastStart;
            lastEnd = textarea.selectionEnd ?? lastEnd;
        };
        
        ['keyup', 'mouseup', 'select', 'input', 'focus', 'blur'].forEach(ev =>
            textarea.addEventListener(ev, remember, true)
        );
        
        // 只在 select 上监听 focus 相关事件来记录位置
        ['focus', 'mousedown'].forEach(ev =>
            select.addEventListener(ev, remember, true)
        );

        // 防抖保护
        let isInserting = false;

        // 统一使用 input 事件来处理插入
        select.addEventListener('input', function handleInsert(e) {
            // 第一时间阻止所有传播
            e.stopImmediatePropagation();
            e.preventDefault();
            e.stopPropagation();

            // 防抖检查
            if (isInserting) return;

            const val = select.value;
            if (!val) return;

            isInserting = true;

            insertAtCaret(textarea, val, lastStart, lastEnd);

            // 延迟重置选择器和解除防抖
            setTimeout(() => {
                select.value = '';
                isInserting = false;
            }, 50);

            textarea.focus();
        }, true); // 捕获阶段

        // 移除 change 事件的监听,避免重复触发
        select.addEventListener('change', function(e) {
            e.stopImmediatePropagation();
            e.preventDefault();
            e.stopPropagation();
        }, true);

        function insertAtCaret(textarea, text, selStart, selEnd) {
            // 记录插入前的滚动位置
            const prevScrollTop = textarea.scrollTop;

            // 确定插入位置
            let start = Number.isInteger(selStart) ? selStart : textarea.selectionStart;
            let end   = Number.isInteger(selEnd)   ? selEnd   : textarea.selectionEnd;
            if (!Number.isInteger(start) || !Number.isInteger(end)) {
                start = end = textarea.value.length;
            }

            // 拼接新内容
            const before = textarea.value.slice(0, start);
            const after  = textarea.value.slice(end);
            textarea.value = before + text + after;

            // 插入后的光标位置
            const newPos = start + text.length;

            // 关键:重新 focus 并设置光标位置
            textarea.focus();
            textarea.setSelectionRange(newPos, newPos);

            // 延迟触发 input 事件,避免与原生逻辑冲突
            setTimeout(() => {
                textarea.dispatchEvent(new Event('input', { bubbles: true }));
            }, 0);

            // 恢复滚动条位置
            textarea.scrollTop = prevScrollTop;

            // 更新记忆位置
            lastStart = lastEnd = newPos;
        }
    });
}
无标题 无名氏 2025-11-08(六)05:32:47 ID:fSWxzzu [举报] No.67383251 管理
等等这个代码如果正常运行时是什么个情况,好像颜文字并没有出现在光标上啊(|||゚Д゚)
无标题 无名氏 2025-11-08(六)11:59:22 ID:NMDJxCc (PO主) [举报] No.67384219 管理
>>No.67383251
原先的逻辑应该是先记录光标位置拼接前文+颜文字+后文最后再把光标放回到记录位置。肥哥的这个版本我等会上机测试一下゚Å゚ ) 

UP主: