JS中iframe如何却写面包屑功能

简介: JS中iframe如何却写面包屑功能

什么是Iframe:

frame,全称为嵌入式框架,是一个HTML标签,用于创建内联框架以在当前HTML页面中嵌入另一个文档。它承载了一个单独的嵌入窗口,这个窗口有自己的document和window。我们可以通过iframe标签的src属性指定要嵌入的页面的路径,iframe还有一些常用的属性,比如可以设置其高度(height),重要性(importance)以及名称(name)等等。同时,所有的主流浏览器都支持iframe标签。值得注意的是,HTML5相对于HTML 4.01增加了一些新的属性,同时也去掉了部分属性。

Iframe的应用场景:

iframe的典型应用场景包括跨域通信,如网页编辑器等。例如,当用户打开了多个标签页时,只有一个在播放音乐播放器。此外,iframe还用于解决ajax化网站响应浏览器前进后退的问题。

另一种常见的应用场景是无刷新的文件上传。当formData不可用时,可以创建一个iframe作为代替方式。

邮箱也常用iframe,例如QQ邮箱。同时,iframe还可以创建一个全新的独立环境来加载广告,比如联盟广告。

iframe解决了什么问题:

iframe作为一种HTML元素,其主要作用是创建内联框架以在当前HTML页面中嵌入另一个文档。它的使用场景多样,解决了多种问题。例如,当一个网站的多个页面的导航栏部分相同,为了避免在切换页面时重复下载,可以通过将导航栏和正文分开放在iframe中进行加载。此外,iframe还能够解决跨域的问题,通过嵌套支持postMessage方法,完美避开跨域的问题。

同时,iframe的使用也带来了一些安全性问题。例如,当网站设置了X-Frame-Options为DENY或SAMEORIGIN时,浏览器将不允许将该页面在iframe中加载,以防止点击劫持等安全问题。

什么是面包屑:

面包屑是一种小文本路径,通常位于页面顶部,用于显示用户在网站中的位置,以及如何返回上一级页面。这个概念源于一个童话故事“汉赛尔”和“格莱特”兄妹俩,当他们被带到森林中时想到通过沿途撒下面包屑来帮助他们能够找到回家的路。所以,面包屑导航意在告知用户所处的当前网页的位置,方便用户可以通过该导航快速返回上一级网页。

通常面包屑以一种层级结构的形式展现,每一层级代表一个页面或分类,用户可以通过点击面包屑上的链接回到之前的页面或分类。

你比如说,一个面包屑可能是这样的:

首页 > 电视 > 智能电视 > 55英寸智能电视,这表示用户当前正在查看的是55英寸智能电视的页面,并告诉用户如何回到电视或首页。

面包屑的作用在于:

提供导航:面包屑可以告诉用户当前所处位置以及如何返回到之前的页面或分类,方便用户进行导航。

提高用户体验:面包屑可以让用户更快速地找到自己需要的内容,提高用户的访问体验。

提高网站可用性:面包屑可以让用户更好地理解网站的结构和组织,提高网站的可用性和易用性。

需要注意的是,面包屑应该尽可能简洁明了,不应该包含太多的层级,以免影响用户体验。同时,面包屑应该与网站的其他导航方式相结合,提供更全面的导航。

 

面包屑的Iframe实现:

在iframe框架中,实现面包屑导航通常由父窗口来维护和显示。具体的实现思路可以是这样的:首先,在父窗口中定义一个数组,用于存储当前页面的路径信息。例如,我们可以创建一个名为breadcrumb的数组,其内容为['首页', '分类', '电视'],这样就能清楚地显示出用户当前的访问路径。然后,我们需要动态生成面包屑导航数据,这些数据包括面包屑导航的文本和链接,这可以通过前端路由或者URL参数等方式获取用户当前的访问路径信息来实现。最后,渲染面包屑导航,将其显示在页面上。

总体来说,iframe 框架的面包屑导航流程与普通页面的面包屑导航类似,只是需要在父窗口中来维护和显示面包屑导航,而在子窗口中则需要向父窗口发送消息来更新面包屑导航。

Demo:

在HTML中创建无序列表和iframe:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>面包屑效果</title>
</head>
<body>
    <ul id="breadcrumb">
        <li><a href="#" data-url="page1.html">页面1</a></li>
        <li><a href="#" data-url="page2.html">页面2</a></li>
        <li><a href="#" data-url="page3.html">页面3</a></li>
    </ul>
    <iframe id="content" src="page1.html"></iframe>
    <script src="main.js"></script>
</body>
</html>

在JavaScript中编写代码以监听点击事件并更新iframe内容:

// main.js
document.addEventListener('DOMContentLoaded', function() {
    var breadcrumb = document.getElementById('breadcrumb');
    var content = document.getElementById('content');
    breadcrumb.addEventListener('click', function(event) {
        if (event.target.tagName === 'A') {
            event.preventDefault();
            var url = event.target.getAttribute('data-url');
            content.src = url;
        }
    });
});

这个示例中,当用户点击面包屑中的链接时,iframe的内容会更新为相应的页面。请注意,这个示例仅适用于静态页面,如果需要动态加载页面内容,可以使用Ajax或其他技术。

相关文章
|
2月前
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
46 10
|
2月前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
56 8
|
3月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
4月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
72 5
|
4月前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
62 2
|
存储 前端开发 JavaScript
|
存储 JavaScript 前端开发
JavaScript 常用功能总结
小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式。   目录: 众所周知,JavaScript是动态的面向对象的编程语言,能够实现以下效果: 1. 丰富Web 网页功能 2. 丰富Web界面 3. 实现本地或远程存储。
1265 0
|
4月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
54 1
JavaScript中的原型 保姆级文章一文搞懂
|
8月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
143 2
|
4月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
37 0

热门文章

最新文章