AI 生成: 一个简单的浏览器扩展/网页工具,用于在浏览器中快速调用百度搜索选中的文本或输入的查询词。
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# Browser Baidu Search
|
||||
|
||||
一个简洁实用的浏览器工具,用于快速调用百度搜索。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 🔍 快速搜索:输入关键词后点击按钮或按回车即可跳转到百度搜索结果页
|
||||
- 📝 选中文本搜索:在页面上选中文本后,点击扩展图标即可自动填入搜索框
|
||||
- 🎨 简洁界面:现代化 UI 设计,支持深色模式
|
||||
- ⚡ 零依赖:纯 HTML/CSS/JS 实现,无需构建工具
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
browser-baidu-search/
|
||||
├── index.html # 主页面
|
||||
├── css/
|
||||
│ └── style.css # 样式文件
|
||||
├── js/
|
||||
│ └── main.js # 核心逻辑
|
||||
└── README.md # 说明文档
|
||||
```
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 方式一:直接打开网页
|
||||
|
||||
1. 下载本项目到本地
|
||||
2. 双击 `index.html` 在浏览器中打开
|
||||
3. 在输入框中输入关键词,点击「百度一下」按钮或按回车键
|
||||
4. 浏览器将跳转到百度搜索结果页
|
||||
|
||||
### 方式二:作为浏览器扩展(Chrome/Edge)
|
||||
|
||||
1. 打开浏览器扩展管理页面(chrome://extensions/)
|
||||
2. 开启「开发者模式」
|
||||
3. 点击「加载已解压的扩展程序」,选择本项目目录
|
||||
4. 在任意网页选中文本,点击扩展图标即可快速搜索
|
||||
|
||||
## 技术说明
|
||||
|
||||
- 使用 `window.open()` 打开百度搜索页面
|
||||
- 使用 URL 编码 `encodeURIComponent()` 处理中文关键词
|
||||
- 支持键盘快捷键(Enter 键)
|
||||
- 响应式布局,适配移动端
|
||||
|
||||
## 自定义
|
||||
|
||||
如需修改搜索引擎,编辑 `js/main.js` 中的 `SEARCH_URL` 常量:
|
||||
|
||||
```javascript
|
||||
const SEARCH_URL = 'https://www.baidu.com/s?wd=';
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
/* 全局重置 */
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--primary: #4e6ef2;
|
||||
--primary-hover: #3b5bdb;
|
||||
--bg: #ffffff;
|
||||
--text: #1f1f1f;
|
||||
--text-secondary: #666;
|
||||
--border: #e0e0e0;
|
||||
--shadow: rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--bg: #1a1a1a;
|
||||
--text: #f0f0f0;
|
||||
--text-secondary: #aaa;
|
||||
--border: #333;
|
||||
--shadow: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
|
||||
"Hiragino Sans GB", "Microsoft YaHei", sans-serif;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 20px;
|
||||
transition: background 0.3s ease, color 0.3s ease;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
max-width: 640px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 头部 */
|
||||
.header {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-size: 48px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.logo-baidu {
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.logo-search {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
color: var(--text-secondary);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* 搜索框 */
|
||||
.search-box {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.input-wrapper {
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.search-input {
|
||||
flex: 1;
|
||||
padding: 14px 20px;
|
||||
font-size: 16px;
|
||||
border: 2px solid var(--border);
|
||||
border-radius: 12px;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
outline: none;
|
||||
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.search-input:focus {
|
||||
border-color: var(--primary);
|
||||
box-shadow: 0 0 0 4px rgba(78, 110, 242, 0.15);
|
||||
}
|
||||
|
||||
.search-input::placeholder {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.search-btn {
|
||||
padding: 14px 28px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
background: var(--primary);
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: background 0.2s ease, transform 0.1s ease;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.search-btn:hover {
|
||||
background: var(--primary-hover);
|
||||
}
|
||||
|
||||
.search-btn:active {
|
||||
transform: scale(0.97);
|
||||
}
|
||||
|
||||
/* 热门搜索 */
|
||||
.hot-words {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 8px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.hot-label {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
.hot-tag {
|
||||
padding: 6px 14px;
|
||||
background: transparent;
|
||||
color: var(--text-secondary);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 20px;
|
||||
cursor: pointer;
|
||||
font-size: 13px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.hot-tag:hover {
|
||||
color: var(--primary);
|
||||
border-color: var(--primary);
|
||||
background: rgba(78, 110, 242, 0.06);
|
||||
}
|
||||
|
||||
/* 底部 */
|
||||
.footer {
|
||||
margin-top: 40px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid var(--border);
|
||||
color: var(--text-secondary);
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* 响应式 */
|
||||
@media (max-width: 480px) {
|
||||
.logo {
|
||||
font-size: 36px;
|
||||
}
|
||||
|
||||
.input-wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.search-btn {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>百度搜索 - 快速搜索工具</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="header">
|
||||
<h1 class="logo">
|
||||
<span class="logo-baidu">百度</span>
|
||||
<span class="logo-search">搜索</span>
|
||||
</h1>
|
||||
<p class="subtitle">快速调用百度搜索引擎</p>
|
||||
</header>
|
||||
|
||||
<main class="search-box">
|
||||
<div class="input-wrapper">
|
||||
<input
|
||||
type="text"
|
||||
id="searchInput"
|
||||
class="search-input"
|
||||
placeholder="请输入搜索关键词..."
|
||||
autocomplete="off"
|
||||
autofocus
|
||||
>
|
||||
<button id="searchBtn" class="search-btn" type="button">
|
||||
百度一下
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="hot-words">
|
||||
<span class="hot-label">热门搜索:</span>
|
||||
<button class="hot-tag" data-word="天气">天气</button>
|
||||
<button class="hot-tag" data-word="新闻">新闻</button>
|
||||
<button class="hot-tag" data-word="翻译">翻译</button>
|
||||
<button class="hot-tag" data-word="地图">地图</button>
|
||||
<button class="hot-tag" data-word="视频">视频</button>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<p>提示:选中网页文本后点击扩展图标,可快速搜索</p>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
// ============================================
|
||||
// 百度搜索工具 - 核心逻辑
|
||||
// ============================================
|
||||
|
||||
// 百度搜索 URL 前缀
|
||||
const SEARCH_URL = 'https://www.baidu.com/s?wd=';
|
||||
|
||||
// DOM 元素
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
const searchBtn = document.getElementById('searchBtn');
|
||||
const hotTags = document.querySelectorAll('.hot-tag');
|
||||
|
||||
/**
|
||||
* 执行搜索:打开百度搜索结果页
|
||||
* @param {string} keyword - 搜索关键词
|
||||
*/
|
||||
function doSearch(keyword) {
|
||||
const trimmed = (keyword || '').trim();
|
||||
if (!trimmed) {
|
||||
alert('请输入搜索关键词');
|
||||
searchInput.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
// 使用 encodeURIComponent 编码中文和特殊字符
|
||||
const url = SEARCH_URL + encodeURIComponent(trimmed);
|
||||
|
||||
// 在新标签页打开搜索结果
|
||||
window.open(url, '_blank', 'noopener,noreferrer');
|
||||
}
|
||||
|
||||
/**
|
||||
* 从当前输入框获取关键词并搜索
|
||||
*/
|
||||
function searchFromInput() {
|
||||
doSearch(searchInput.value);
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// 事件绑定
|
||||
// ============================================
|
||||
|
||||
// 点击搜索按钮
|
||||
searchBtn.addEventListener('click', searchFromInput);
|
||||
|
||||
// 输入框按回车键
|
||||
searchInput.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Enter') {
|
||||
searchFromInput();
|
||||
}
|
||||
});
|
||||
|
||||
// 热门搜索标签点击
|
||||
hotTags.forEach((tag) => {
|
||||
tag.addEventListener('click', () => {
|
||||
const word = tag.dataset.word;
|
||||
searchInput.value = word;
|
||||
doSearch(word);
|
||||
});
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// 支持从 URL 参数获取查询词(如 ?q=关键词)
|
||||
// 用于浏览器扩展或外部调用
|
||||
// ============================================
|
||||
(function initFromQuery() {
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const q = params.get('q');
|
||||
if (q) {
|
||||
searchInput.value = q;
|
||||
// 自动聚焦但不自动搜索,交给用户确认
|
||||
searchInput.focus();
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user