用户:Ztm0929/common.js

Ztm0929留言 | 贡献2025年9月3日 (三) 15:30的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
mw.loader.using(['jquery']).then(function () {

  function focusSearch() {
    // 常见搜索输入选择器:不同皮肤都尽量兼容
    var $input = $('#searchInput, input[name="search"], .vector-search-box-input').filter(':visible').first();
    if ($input.length) {
      $input.trigger('focus')[0].select();
      return true;
    }

    // 若搜索输入未见:尝试点击“放大镜/搜索开关”,再聚焦
    var $toggle = $(
      // Vector 2022 / 其他皮肤常见按钮(尽量广覆盖)
      'button[aria-controls*="search"], [data-action="search"], .vector-header .mw-ui-icon-search, .citizen-search-toggle, .mw-searchToggle, .search-toggle'
    ).filter(':visible').first();

    if ($toggle.length) {
      $toggle.trigger('click');
      setTimeout(function () {
        var $input2 = $('#searchInput, input[name="search"], .vector-search-box-input').filter(':visible').first();
        if ($input2.length) {
          $input2.trigger('focus')[0].select();
        }
      }, 50);
      return true;
    }
    return false;
  }

  $(document).on('keydown', function (e) {
    // 在输入框/编辑区里就不要拦截
    var $t = $(e.target);
    if ($t.is(':input, [contenteditable], [role="textbox"]')) return;
    if (e.ctrlKey || e.altKey || e.metaKey) return;

    // 捕获“/”键。兼容不同浏览器/键盘布局
    if (e.key === '/' || e.code === 'Slash' || e.keyCode === 191) {
      e.preventDefault();           // 阻止浏览器把“/”打到页面或触发 FF 的快速查找
      focusSearch();
    }
  });
});