昨天开发今天刚上架的,欢迎试用 :]
https://chromewebstore.google.com/detail/wikipedia-language-switch/bkgagbbneincfejedomdhfpfmfaceabo
使用方法:安装后维基页面标题右方会附上对应的英/中页面链接。
1
troilus 3 天前
有没有可能用扩展太“重”了,一个油猴脚本:
``` // ==UserScript== // @name 维基百科跨语言跳转助手(改进版) // @namespace http://tampermonkey.net/ // @version 1.1 // @description 在维基百科页面显示对应语言版本的链接,从语言链接栏获取准确 URL // @author ChatGPT // @match https://zh.wikipedia.org/* // @match https://en.wikipedia.org/* // @match https://*.wikipedia.org/* // @icon https://www.wikipedia.org/static/favicon/wikipedia.ico // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 添加自定义样式 const style = document.createElement('style'); style.textContent = ` .wp-crosslang-container { display: inline-block; margin-left: 12px; vertical-align: middle; } .wp-crosslang-btn { background: #f8f9fa; border: 1px solid #a2a9b1; border-radius: 2px; padding: 3px 8px; font-size: 12px; color: #0645ad; cursor: pointer; transition: all 0.2s ease; text-decoration: none; display: inline-block; } .wp-crosslang-btn:hover { background: #fff; border-color: #0645ad; color: #0645ad; text-decoration: none; } .wp-crosslang-btn:active { background: #f0f0f0; } .wp-crosslang-loading { opacity: 0.7; cursor: wait; } @media screen and (max-width: 768px) { .wp-crosslang-container { display: block; margin-left: 0; margin-top: 8px; } } `; document.head.appendChild(style); // 获取对应语言的链接 function getLanguageLink(targetLang) { // 在侧边栏语言列表中找到目标语言链接 const langList = document.querySelector('#p-lang .wbc-editpage, #p-lang .wb-langlinks-link'); if (langList) { const langLinks = document.querySelectorAll('#p-lang li a'); for (const link of langLinks) { const href = link.getAttribute('href'); const lang = link.getAttribute('lang') || link.getAttribute('hreflang') || ''; const text = link.textContent.trim(); if (lang === targetLang || (targetLang === 'en' && text === 'English') || (targetLang === 'zh' && text === '中文')) { return href; } } } // 尝试在页面底部的语言链接中找到 const interwikiLinks = document.querySelectorAll('.interlanguage-link a'); for (const link of interwikiLinks) { const lang = link.getAttribute('lang') || link.getAttribute('hreflang') || ''; const text = link.textContent.trim(); const href = link.getAttribute('href'); if (lang === targetLang || (targetLang === 'en' && text === 'English') || (targetLang === 'zh' && text === '中文')) { return href; } } return null; } // 获取当前语言和目标语言 function getLanguages() { const hostname = window.location.hostname; if (hostname.includes('zh.') || hostname.includes('.zh.')) { return { current: 'zh', target: 'en', targetName: 'English' }; } else if (hostname.includes('en.') || hostname.includes('.en.')) { return { current: 'en', target: 'zh', targetName: '中文' }; } // 默认情况 return { current: 'en', target: 'zh', targetName: '中文' }; } // 创建跳转按钮 function createJumpButton(href, targetName) { const container = document.createElement('div'); container.className = 'wp-crosslang-container'; const button = document.createElement('a'); button.className = 'wp-crosslang-btn'; button.href = href; button.target = '_blank'; button.rel = 'noopener noreferrer'; button.textContent = targetName; // 添加点击事件 button.addEventListener('click', function(e) { console.log(`跳转到${targetName}版维基百科`); }); container.appendChild(button); return container; } // 创建加载中的按钮 function createLoadingButton(targetName) { const container = document.createElement('div'); container.className = 'wp-crosslang-container'; const button = document.createElement('span'); button.className = 'wp-crosslang-btn wp-crosslang-loading'; button.textContent = `加载${targetName}...`; container.appendChild(button); return container; } // 主函数 function init() { // 获取语言信息 const { target, targetName } = getLanguages(); // 获取标题元素 const titleElement = document.querySelector('#firstHeading, .mw-first-heading, .firstHeading, h1'); if (!titleElement) { console.log('无法找到标题元素'); return; } // 先创建加载中的按钮 const loadingButton = createLoadingButton(targetName); titleElement.appendChild(loadingButton); // 尝试获取语言链接 const langLink = getLanguageLink(target); if (langLink) { // 移除加载按钮,添加实际链接按钮 titleElement.removeChild(loadingButton); const button = createJumpButton(langLink, targetName); titleElement.appendChild(button); } else { // 没有找到对应语言链接,更新按钮状态 loadingButton.querySelector('span').textContent = `无${targetName}版本`; loadingButton.querySelector('span').classList.remove('wp-crosslang-loading'); } } // 页面加载完成后执行 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })(); ``` |