[前端] 为网站侧边栏添加搜索引擎模块

前言

最近想给我的个人网站侧边栏添加一个搜索引擎模块,可以引导用户帮助本站SEO优化(让用户可以通过点击搜索按钮完成一次对本人网站的搜索,从而实现对网站的搜索引擎优化)。
最开始,我只是想实现一个简单的百度搜索引擎模块。后来又考虑到搜索市场的多样性,加入更多搜索引擎让搜索框更有意思一些,于是决定让它随机选择百度或 Bing 进行搜索。最后甚至想同时达到优化两个搜索引擎的目的,实现一个搜索框同时打开百度和 Bing 的搜索结果页面。最终诞生了三个不同的版本,今天就来分享一下如何实现侧边栏搜索引擎模块。

效果展示

侧边栏搜索框图片


1. 百度引擎版

一个仅支持百度搜索引擎的搜索框。

<!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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        :root {
            --theme: #44A8C7;
            --main: #333;
            --minor: #999;
        }

        .search-widget {
            padding: 15px;
            margin-bottom: 20px;
            max-width: 100%;
        }

        .search-widget .title {
            display: flex;
            align-items: center;
            font-size: 16px;
            color: var(--main);
            margin-bottom: 10px;
        }

        .search-widget .title i {
            font-size: 20px;
            margin-right: 10px;
        }

        .search-widget .title .text {
            font-weight: bold;
        }

        .search-widget .search-form {
            position: relative;
            border: 1px solid var(--theme);
            border-radius: 4px;
            overflow: hidden;
        }

        .search-widget .search-input {
            border: none;
            font-size: 14px;
            padding: 9px 8px;
            width: calc(100% - 80px);
        }

        .search-widget .search-submit {
            position: absolute;
            right: 2px;
            top: 50%;
            transform: translateY(-50%);
            border: none;
            background: var(--theme);
            color: #fff;
            padding: 6px 8px;
            cursor: pointer;
            border-top-right-radius: 4px;
            border-bottom-right-radius: 4px;
        }

        .search-widget .search-tip {
            font-size: 13px;
            color: var(--minor);
            margin-top: 5px;
        }
    </style>
</head>
<body>
    <!-- 百度搜索引擎搜索框 -->
    <section class="search-widget">
        <div class="title">
            <i class="fas fa-search"></i>
            <span class="text">百度搜索引擎</span>
        </div>
        <div class="search-form">
            <form id="search-form" action="https://www.baidu.com/s" method="GET" target="_blank">
                <input class="search-input" type="text" name="wd" placeholder="Dangks' Blog" value="Dangks' Blog">
                <button class="search-submit" type="submit">搜索</button>
            </form>
        </div>
        <div class="search-tip">🔎点击搜索,可帮助本站seo优化!</div>
    </section>
</body>
</html>

2. 百度必应随机版

使用搜索框随机选择百度或 Bing 进行搜索。

<!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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        /* 同上 */
    </style>
</head>
<body>
    <!-- 随机搜索引擎搜索框 -->
    <section class="search-widget">
        <div class="title">
            <i class="fas fa-search"></i>
            <span class="text">随机搜索引擎</span>
        </div>
        <div class="search-form">
            <form id="search-form" action="" method="GET" target="_blank">
                <input class="search-input" type="text" name="query" placeholder="Dangks' Blog" value="Dangks' Blog">
                <button class="search-submit" type="submit">搜索</button>
            </form>
        </div>
        <div class="search-tip">🔎点击搜索,可帮助本站seo优化!</div>
    </section>

    <script>
        document.getElementById('search-form').addEventListener('submit', function(event) {
            event.preventDefault();
            const queryInput = document.querySelector('.search-input');
            const query = queryInput.value;

            // 随机选择搜索引擎
            const engines = ['baidu', 'bing'];
            const randomEngine = engines[Math.floor(Math.random() * engines.length)];

            let searchUrl = '';
            if (randomEngine === 'baidu') {
                searchUrl = `https://www.baidu.com/s?wd=${encodeURIComponent(query)}`;
            } else if (randomEngine === 'bing') {
                searchUrl = `https://www.bing.com/search?q=${encodeURIComponent(query)}`;
            }

            window.open(searchUrl, '_blank');
        });
    </script>
</body>
</html>

3. 百度必应双重版

使用搜索框同时打开百度和 Bing 的搜索结果页面。

<!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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    <style>
        /* 同上 */
    </style>
</head>
<body>
    <!-- 多搜索引擎搜索框 -->
    <section class="search-widget">
        <div class="title">
            <i class="fas fa-search"></i>
            <span class="text">多搜索引擎</span>
        </div>
        <div class="search-form">
            <form id="search-form" action="" method="GET" target="_blank">
                <input class="search-input" type="text" name="query" placeholder="Dangks' Blog" value="Dangks' Blog">
                <button class="search-submit" type="submit">搜索</button>
            </form>
        </div>
        <div class="search-tip">🔎点击搜索,可帮助本站seo优化!</div>
    </section>

    <script>
        document.getElementById('search-form').addEventListener('submit', function(event) {
            event.preventDefault();
            const queryInput = document.querySelector('.search-input');
            const query = queryInput.value;

            // 生成百度搜索 URL
            const baiduUrl = `https://www.baidu.com/s?wd=${encodeURIComponent(query)}`;
            // 生成 Bing 搜索 URL
            const bingUrl = `https://www.bing.com/search?q=${encodeURIComponent(query)}`;

            // 打开百度搜索结果页面
            window.open(baiduUrl, '_blank');

            // 延迟打开 Bing 搜索结果页面
            setTimeout(() => {
                window.open(bingUrl, '_blank');
            }, 100); // 延迟100毫秒
        });
    </script>
</body>
</html>

⚠ 提示:“双重版” 经过测试是可用的,但通常由于浏览器的安全机制,搜索引擎快速打开多个页面可能会被拦截,可以手动设置始终允许网站的窗口弹出。如下图所示:
在这里插入图片描述


总结

通过上述三个版本的代码,我们展示了如何为网站侧边栏添加一个多功能搜索引擎模块。无论是简单的百度搜索框,还是随机选择搜索引擎,或者是同时打开多个搜索引擎的结果页面,三种可能随你选择。希望这些示例能对您有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/910013.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git - 两种方式撤销已提交到远端仓库的记录并删除提交记录

文章目录 命令行方式附 命令行方式 确定要撤销的提交记录 首先&#xff0c;使用以下命令查看提交历史&#xff1a; git log找到想撤销的提交记录的哈希值&#xff08;SHA&#xff09; &#xff0c;比如9c9c98d6f7f28c41d971f8efd51ed31f9720792c 撤销提交记录 根据需求选择以下…

【命令执行waf绕过】

一、绕过空格 二、绕过黑名单 三、绕过长度限制 四、练习 发现了两个文件&#xff0c;cat读取&#xff0c;但是被过滤了&#xff1a; 用 I F S IFS IFS绕过读出index的源码&#xff0c;发现过滤了很多东西&#xff0c;黑名单过滤&#xff1a; 字符串拼接绕过&#xff1a; …

Beans模块之工厂模块注解模块AnnotatedGenericBeanDefinition

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

【毫米波雷达(三)】汽车控制器启动流程——BootLoader

汽车控制器启动流程——BootLoader 一、什么是Bootloader(BT)&#xff1f;二、FBL、PBL、SBL、ESS的区别三、MCU的 A/B分区的实现 一、什么是Bootloader(BT)&#xff1f; BT就是一段程序&#xff0c;一段引导程序。它包含了启动代码、中断、主程序等。 雷达启动需要由BT跳转到…

原生鸿蒙的竞争力到底如何?

目录 1. 崛起与挑战2. 安全机制3. 自动化检测前移4. 深入探讨开发者服务优势 1. 崛起与挑战 长期以来&#xff0c;移动操作系统市场被IOS和安卓所垄断&#xff0c;一直都难以推出完整的自主系统&#xff0c;面临诸多挑战&#xff0c;如推广困难、应用适配难度大&#xff0c;以及…

Unity SRP学习笔记(二)

Unity SRP学习笔记&#xff08;二&#xff09; 主要参考&#xff1a; https://catlikecoding.com/unity/tutorials/custom-srp/ https://docs.unity.cn/cn/2022.3/ScriptReference/index.html 中文教程部分参考&#xff08;可选&#xff09;&#xff1a; https://tuncle.blog/c…

欧冠:拜仁进攻线持续飘红?

里斯本竞技最终4-1击败曼城&#xff0c;瓜迪奥拉的球队惨遭3连败。目前曼城的防线球员身体状态的确一般&#xff0c;一对一总是跟不上节奏&#xff0c;这也是曼城两次遭遇点球判罚的原因。当一个人失去希望时&#xff0c;眼神是空洞的&#xff0c;哈兰德下半场罚丢点球的时刻&a…

从0开始的STM32之旅8 串口通信(II)

目录 在开始理解底层原理之前&#xff0c;我们先尝试一下 怎么做 进一步理解 HAL_UART_Transmit HAL_UART_Receive 在开始理解底层原理之前&#xff0c;我们先尝试一下 现在我们综合一下&#xff0c;要求完成如下的事情&#xff1a; 在主程序中存在一个flag变量描述当前有…

HarmonyOS使用arkTS拉起指定第三方应用程序

HarmonyOS使用arkTS拉起指定第三方应用程序 前言代码及说明bundleName获取abilityName获取 前言 本篇只说采用startAbility方式拉起第三方应用&#xff0c;需要用到两个必备的参数bundleName&#xff0c;abilityName&#xff0c;本篇就介绍如何获取参数… 代码及说明 bundle…

WPF之iconfont(字体图标)使用

1&#xff0c;前文&#xff1a; WPF的Xaml是与前端的Html有着高度相似性的标记语言&#xff0c;所以Xaml也可同Html一般轻松使用阿里提供的海量字体图标&#xff0c;从而有效的减少开发工作度。 2&#xff0c;下载字体图标&#xff1a; 登录阿里图标库网iconfont-阿里巴巴矢量…

猎板PCB2到10层数的科技进阶与应用解析

1. 单层板&#xff08;Single-sided PCB&#xff09; 定义&#xff1a;单层板是最基本的PCB类型&#xff0c;导线只出现在其中一面&#xff0c;因此被称为单面板。限制&#xff1a;由于只有一面可以布线&#xff0c;设计线路上有许多限制&#xff0c;不适合复杂电路。应用&…

HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解

文章目录 1. `<a>`元素属性hreftargetname2. `<img>`元素属性srcaltwidth 和 height3. `<form>`元素属性actionmethodenctype4. `<input>`元素属性typevaluenamereadonly5. `<table>`元素属性cellpaddingcellspacing小结HTML元素除了可以使用全局…

腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时

前言 也是尝试了各种解决方案之后&#xff0c;无果&#xff0c; 后来发现每个服务器提供商都有自己的镜像加速&#xff0c;且只给自家服务器使用&#xff0c;我用的腾讯云 教程 安装docker 直接上链接&#xff1a;云服务器 搭建 Docker-实践教程-文档中心-腾讯云 配置加速镜…

使用LNMP搭建私有云存储+内网穿透

目录 LNMP搭建私有云存储准备工作安装 内网穿透&#xff08;cpolar&#xff09; LNMP搭建私有云存储 准备工作 恢复快照&#xff0c;关闭安全软件 [rootserver ~]# setenforce 0 setenforce: SELinux is disabled [rootserver ~]# systemctl stop firewalld搭建LNMP环境 [r…

虚幻引擎5(UE5)学习教程

虚幻引擎5&#xff08;UE5&#xff09;学习教程 引言 虚幻引擎5&#xff08;Unreal Engine 5&#xff0c;简称UE5&#xff09;是Epic Games开发的一款强大的游戏引擎&#xff0c;广泛应用于游戏开发、影视制作、建筑可视化等多个领域。UE5引入了许多先进的技术&#xff0c;如…

VBA02-初识宏——EXCEL录像机

一、录制宏 录制宏其实就是将一系列操作结果录制下来&#xff0c;并命名存储。这些操作可以是关于数据的处理、格式的设置、函数的运用等&#xff0c;相当于在编程语言&#xff08;如VB&#xff09;中定义的一个子程序。 在录制宏时&#xff0c;软件会记录用户执行的一系列操…

如何找到奥德彪视频素材?推荐视频素材网站

今天&#xff0c;我们来聊一个充满趣味的话题——奥德彪视频素材。即使你还不太了解这个名词&#xff0c;跟着我一起探索&#xff0c;你会发现这其实是一个非常有趣的旅程。接下来&#xff0c;我将推荐几个优秀的视频素材网站&#xff0c;帮助你找到想要的奥德彪视频素材。 蛙学…

vue3如何使用pinia设置全局状态,附常见面试题

1. stores/index.ts 文件 在 index.ts 中创建 store 实例并封装了注册逻辑&#xff0c;这样可以方便地将整个 Pinia 实例注册到 Vue 应用中。代码如下&#xff1a; import type { App } from vue import { createPinia } from piniaconst store createPinia()// 全局注册 st…

【字符串匹配算法】BF与KMP算法

一、BF算法 1.1 概念 BF算法&#xff0c;即暴力&#xff08;Brute Force&#xff09;算法&#xff0c;是普通的模式匹配算法&#xff0c;BF算法的思想就是将目标串S与字串T的第一个字符进行匹配&#xff0c;若相等&#xff0c;则继续比较S的第二个字串和T的第二个字符&#x…

【Allure】allure装饰器函数

**allure装饰器**​作用&#xff1a;用于将测试用例的数据展示到测试报告中 1.需要将这些装饰器函数添加**测试方法或测试类的开头**。2.同一个类或者一个方法可以添加多个装饰器函数 &#xff0c;这样此用例就具有了个作用属性 。 allure.epic() 敏捷中的概念 项目名称 allu…