有没有大佬能加上义项展开的开关和快捷键

精装 - 牛精九 online - #120,来自 Riley 这个帖子的。

你指的是可以展开和折叠的 Examples 吗?我自己是直接把 Collocations 默认自动展开的,方法就是在 oald9.js 开头加上:

setTimeout(function() {
    var collapseElements = document.querySelectorAll('.collapse[title="Oxford Collocations Dictionary"] .heading');
    collapseElements.forEach(function(headingElement) {
        headingElement.click();
    });
}, 0);

如果是默认自动展开例句,则是把第二行做个修改:title="Extra examples"

可能没有开关方便,而且例句有时候很多的话,就会让页面变得很长。

1 Like

1.例句太长了


2.加在那里,比较笨。谢谢

放在你光标的位置就可以。

你想实现的是把整个义项都折叠,快速浏览?这个就要大动干戈了,实现起来不容易,而且感觉效果跟快速滑动差不太多。

咱们说的例句不是同一个东西 :innocent:

好吧,谢谢。

OK。麻烦了

类似于这个效果?

折叠前:

折叠后:

对对,怎么搞的?

让 ChatGPT 写了一个,你可以试一下,放在之前说的那个位置就行(删掉原先的自动展开,保留也没问题)。

document.addEventListener('DOMContentLoaded', function() {
    setTimeout(function() {
        const elementsSelector = '.x-gs, .collapse';
        const toggleVisibility = (elements, display) => elements.forEach(e => e.style.display = display);

        document.querySelectorAll(elementsSelector).forEach(e => e.style.display = 'none');

        document.querySelectorAll('.def.translation_individual').forEach(element => {
            element.addEventListener('click', function() {
                const elements = this.parentElement.querySelectorAll(elementsSelector);
                const display = elements[0].style.display === 'none' ? 'block' : 'none';
                toggleVisibility(elements, display);
            });
        });

        const gearMenu = document.getElementById('_OALD9_gear');
        if (gearMenu) {
            gearMenu.addEventListener('click', function() {
                const elements = document.querySelectorAll(elementsSelector);
                const display = elements[0].style.display === 'none' ? 'block' : 'none';
                toggleVisibility(elements, display);
            });
        }
    }, 0);
});
  1. 默认全部折叠。如果想要默认展开,注释掉document.querySelectorAll(elementsSelector).forEach(e => e.style.display = 'none');

  2. 点击义项右侧空白处,展开/折叠。

  3. 点击悬浮窗,全部展开/折叠。

厉害,欧路里折叠了,但2.3功能没有用

我用的也是欧路词典。

  1. 右侧空白指的是义项结尾处,不能离太远。

  2. 悬浮窗是右上角的那个,我测试下来都能用。

没用 :pensive:,你放在哪个个位置的

2和3都不能用吗?你用的是哪个平台,Windows?

对的,是win.

直接把你更改后的js给我,试试看。其他的应该一样吧

花了点时间去调这个 BUG,好像是 Windows 版本欧路的问题。原先的代码我在 Windows 上测试了确实不行,但是 iPhone/iPad 上都是可以的。

还是让 ChatGPT 帮我加个按钮调日志,监听点击的脚本竟然运行了两次,于是乎变成了点击没反应。

以下是修改后的代码,测试了 Windows/iPhone/iPad 都是能用的。

document.addEventListener('DOMContentLoaded', function() {
    if (window.scriptExecuted) return;
    window.scriptExecuted = true;

    const elementsSelector = '.x-gs, .collapse';
    const toggleVisibility = (elements, display) => elements.forEach(e => e.style.display = display);

    setTimeout(function() {
        // Expand all collapsible elements with the specified title
        var collapseElements = document.querySelectorAll('.collapse[title="Oxford Collocations Dictionary"] .heading');
        collapseElements.forEach(function(headingElement) {
            headingElement.click();
        });

        // Hide elements with the specified class by default
        document.querySelectorAll(elementsSelector).forEach(e => e.style.display = 'none');

        // Add click event listeners to elements with the specified class
        document.querySelectorAll('.def.translation_individual').forEach(element => {
            element.addEventListener('click', function() {
                const elements = this.parentElement.querySelectorAll(elementsSelector);
                const display = elements[0].style.display === 'none' ? 'block' : 'none';
                toggleVisibility(elements, display);
            });
        });

        // Add click event listener to the gear menu
        const gearMenu = document.getElementById('_OALD9_gear');
        if (gearMenu) {
            gearMenu.addEventListener('click', function() {
                const elements = document.querySelectorAll(elementsSelector);
                const display = elements[0].style.display === 'none' ? 'block' : 'none';
                toggleVisibility(elements, display);
            });
        }
    }, 0);
});

测试 Windows 的时候,直接点击某个义项上的文本就可以展开/折叠(可能会误触到选词,不过没想到什么改进的方法了)。其他触控的平台 iPhone/iPad,还是点义项结尾旁边的空白处。

这段代码设置的是,默认隐藏例句、自动展开 Collocations ,可以根据需求修改或者注释掉。

1 Like

太厉害了,麻烦你了! :kissing_heart: