在日常工作中,消息通信是一个很常见的场景。比如大家熟悉 B/S 结构,在该结构下,浏览器与服务器之间是基于 HTTP 协议进行消息通信:
语法为:vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]);
1."window.location.href"、"location.href"是本页面跳转
背景:父页面index.html里面有一个iframe,iframe的src为子页面(另一个html的链接),下文都是基于此情况下进行
Vue使用bus进行组件间、父子路由间通信
在浏览器中,通过 标签或者 JavaScript 中的 window.open 函数,可以打开新页面。新页面的 window 对象中,存在一个 opener 属性,保存对父页面的引用。我们知道,Web 应用的安全性,很大程度上是由同源策略(Same Origin Policy,SOP)所保证的。但是,在子页面访问 opener.location 的一些属性和方法时却不受 SOP 保护,这就是本文要探讨问题的核心所在。 来看一个案例,假设父页面中有新窗口打开的子页面链接: <a href="http:
产品需求来啦:点击页面上某个东西,要在新窗口中打开一个页面,注意!要在新窗口中打开。你呵呵一笑,太简单了:
本文讲述了一种在新窗口中打开页面时需要注意的安全问题和解决方案。当使用window.open()在新窗口中打开页面时,可能会存在安全风险。例如,攻击者可以通过恶意脚本劫持新窗口中的页面,从而窃取用户的个人信息。为了防范这种安全风险,可以采用以下方法:使用noopener属性或window.open()并设置opner为空,这样新窗口将不会继承父窗口的任何属性。另外,也可以使用iframe来打开新窗口,并确保iframe中的内容安全。最后,如果必须在新窗口中打开页面,可以使用第三方库,如OpenURL,来避免安全风险。
如上图,在iframe子页面的<script>元素中,定义了taskStatus全局变量,如果希望在其父页面中获取该全局变量的值,则可在父页面的<script>元素中新增js脚本如下:
同一域名下有两个页面parent.html,child.html。parent.html中通过iframe嵌入child.html。父页面触发自定义事件,子页面对其进行响应。 两页面代码如下: 1.parent.html
由于笔者2年前维护了几个比较老的项目是用jquery全家桶开发的,其中有些需求是需要跨页面交互和父子页面通信,故借此总结一下。另一块是前端实现文件下载功能,虽然方法很多,为了不用重复造轮子,在此还是总结一波,毕竟多页面下的应用场景还是很多的。
由于本文介绍的主要还是基于javascript,不涉及任何框架方面的问题(如果想研究vue,react,angular方面的技术问题,可以移步我的其他文章),所以让我们用原生javascript来解决我们上面提到的问题吧。
比如:a.html中,通过点击按钮等方式window.open出一个新的窗口b.html。那么在b.html中,就可以通过window.opener(省略写为opener)来引用a.html,包括a.html的document等对象,操作a.html的内容。
跨域详解 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng@csxiaoyao.com QQ: 1724338257 目录导航 跨域详解 1. 概念 2. 跨域资源共享(CORS) 3. jsonp跨域 3.1 概念 3.2 实现 3.3 jQuery封装操作 3.4 JSONP优缺点 CORS 与 J
需要在子组件处添加 bind:traCheckedNum=”checkNum” checkNum是父js中的方法
3.可能会出现的错误 子弹窗获取不到父页面的json 我在父页面的成功事件里重置了json,之前用着没事,但是我把子弹窗页面放在了static文件夹,父页面放在了template文件夹里,这时候子弹窗还没渲染json就被重置了,导致取不到数据。
作为后端开发者,也不得不学点前端知识。众所周知,以前开发者只要掌握HTML、CSS、JavaScript 三驾马车就能胜任一份Web前端的工作。而在技术日新月异的现在,Vue, React,Angular在代替旧的前端框架已经是大势所趋了。
做WEB前端开发的过程中,经常会有这样的需求,用户点击【编辑】按钮,弹出一个对话框,在里边修改相应的值,然后把修改后的值显示在原页面,最后点击保存。用window.parent.document.getElementById().setAttribute("value","")可以很好的解决这个问题。
在父页面中定义函数,再到子页面中调用。 父页面parent.html function getFrameId(f){ var frames = document.getElementsByTagName(“iframe”); //获取父页面所有iframe for(i=0;i
相比较而言,第一种方案会更佳,因为在操作逻辑上,手动关闭弹出框,应该不触发刷新操作,只有当弹出框的处理逻辑执行成功后,调用函数关闭弹出框才触发父界面刷新操作,基于这个逻辑,应该选择方案一。方案二,不管怎样都会刷新页面,实际上无端的增加了服务器的处理压力。
和H5不同,元素上绑定事件只能传入事件名,不能直接传参,需用通过dataset传参
工作中我们经常会遇到B页面需要A页面内的部分或全部数据;C页面内的一个函数执行完之后需要改变B页面内的显示样式;也或者是A和B两个页面用到了同样的网络数据,在其中一个页面做出修改后另一个页面也要随之改变以保证回传服务器时数据的准确性,等等诸如此类的页面间数据传递的问题。
使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。 HTML5引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。 应用程序缓存为应用带来三个优势:
父页面和子页面(iframe)处于2个不同的进程(即使在同一个域),进程之间的通讯必须通过每个进程内【事件监听所在的线程】来完成。最重要的是,通讯时传输的数据格式必须是序列化的格式,序列化格式指【一维】【线性】的数据类型比如字符串、字节流等,在浏览器中有这么几种序列化格式可选:
Q:a标签target="_blank"的安全问题及解决办法 答:A标签的target属性规定在何处如何打开链接文档常用的有_self & _blank,如果在一个 A 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的、名称与这个目标吻合的框架或者窗口中的文档,如果这个指定名称或 id 的框架或者窗口不存在,浏览器将打开一个新的窗口,给这个窗口一个指定的标记,然后超链接文档就可以指向这个新的窗口。您可以把target=”_blank”理解为新的浏览器窗口打开此超链接;
编译模式:自定义组件模式,这个默认自动设置的。这方面比较复杂,曾经的叫非自定义组件模式官方不在支持。
有时我们需要在js中触发打开新标签页、或者是在当前页面跳转以及在iframe中替换父页面
如下图,我们希望点击导航栏不同菜单时,导航栏下方加载不同的组件,进而展示不同的页面内容
在做H5混合开发的时候总是会遇到浏览器差异、不兼容导致同样的代码,IOS和Andoird其中之一出现不可预见的问题。 我的问题也是如此,我的需求是从父页面跳转子页面,子页面提交后返回父页面,并且父页面刷新。 Android的Chrome浏览器对这个需求就很容易支持,因为他每次页面重新显示的时候,都会刷新整个页面。而IOS的Safari浏览器出现了问题,Safari浏览器会读取缓存,不会重新刷新页面。
参考自文档:https://www.runoob.com/js/met-win-postmessage.html
1、上面是我根据官方的提示方法,以及问答社区朋友的回答,得到的返回刷新页面的方法。
(3)wx.switchTab 方法跳转只适用于调转到设置了tabbar的页面
早期单进程架构是页面渲染和网络下载都是运行在同一个浏览器主进程中,而dom/com解析,js脚本执行,图像输出,插件运行都运行在同一个线程中,这样也带来了一系列的问题:
大家好,又见面了,我是你们的朋友全栈君。 关于使用iframe跳转参数获取问题 怎么把URL参数传递到B页面的iframe的C页面里? A页面打开一个B页面的链接,怎么把A页面的URL参数传递到B页面
跨域详解 1. 概念 协议、域名、端口有一个不同即被当作不同的域 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域名下不同文件夹 允许 http://www.a.com:8000/a.js http://www.a.com/b.js 同一域名,不同端口 不允许 http://www.a.com/a.js https://www.a.com/b.js 同一域名,不同协议 不允许 http://www.a.com/a.js http://70
iFrame如果嵌入的是普通网页,这种场景下的iframe高度自适应解决方案,百度一下随手都能找到一大把。
PlainBashC++C#CSSDiffHTML/XMLJavaJavascriptMarkdownPHPPythonRubySQL
https://gitee.com/ishouke/front_end_plugin/blob/master/jquery-3.2.1.min.js
同源策略就是用来限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。那怎样判断是否是同源呢?
拿到这个对象,就可以根据正常网页的方法拿到嵌入(子)网页的文档高度,然后把值附给父页面的iframe的height。
同源策略(same-origin policy) 最初是由 Netspace 公司在 1995 年引入浏览器的一种安全策略,现在所有的浏览器都遵守同源策略,它是浏览器安全的基石。
layer 弹出层轻量好用,一直喜欢用,但是却没有弹出层传参的接口,迫于无奈只能Url地址传参,总所周知,这个可是限制大小的,百度一番,看看大神们怎么处理,结果就感觉所有回答都是Ctrl+C 加 Ctrl+V ,全是地址栏传参,页面缓存、cookie 、localstorage ,本着不甘心的原则,就想为什么不能在open的时候把参数一起作为属性传递了,强行看了layer源码(扒光慢慢看),于是乎就把源码改了下(作者请原谅我,我只是不爽),看了下源码发现 open方法基本上所有弹框都会调用,修改此处的好处,相比大家也明白,下面贴出修改位置 :打开源码(虽然压缩混淆了,但是还是可以看懂的),搜索 f.open ,对这就是修改的地方,里面new 了一个g 对象,没错这就是暴露出来的对象(共有对象),只需要在把参数暴露出来就好,这里加上 f.methodConfig,暴露的名字自己取
1.父页面调用子页面函数,选择iframe的id + contentWindow +子页面的函数名([参数列表])
小时光茶社 导语:本文章的主要目的就是针对两类人: 一类是没有做过小程序开发,但是想了解小程序整个开发过程及环境和开发中需要注意哪些问题的人,你适合读本文的入门篇,可以帮你节省至少几天的时间。 另一类人就是你写过小程序,但是想对小程序更深入的了解,并想对你的小程序进行一定程度上的优化,那你更适合阅读本文进阶篇,本文给出了一些优化的方向及方法,可供参考。 好了,现在让我们来开启小程序的前生今世探险之旅吧。 目录 (一) 入门 a) 运行环境 b) 开发姿势 c) 一个DEMO
通过前面的一篇文章,微信小程序组件化开发框架wepy 学习(一),大家搭建wepy环境应该没有问题了,可以自己去尝试一下,很简单的。 下面来具体讲讲wepy页面与组件直接有哪些东西。
因为,最近有一个需求中,用到了Worker技术,然后经过一些调研和调试,成功的在项目中应用。虽然,有部分原因是出于「技术尝鲜」的角度才选择Worker进行性能优化。但是,「看懂了,会用了,领悟了」。这是不同的技术层面。
跨域的东西, 简直不要接触太多,网上相关内容一抓一大把,但是突然学习到一个关于前端解决跨域的方式
天气降温,大家注意保暖~~~ 因为学习了腾讯课堂NEXT学院的前端进阶课程,所以打算把课程内容都总结一遍。有些都是很普通很常见的知识,但是为了巩固自己的知识面,梳理自己的知识树,所以每个知识点都会写成文章,所有文章都会放在公众号右下角的前端进阶课程总结中~~~也希望能够帮助到需要的人~~ 跨域的东西, 简直不要接触太多,网上相关内容一抓一大把,但是突然学习到一个关于前端解决跨域的方式 就是 利用 iframe 不管你有没有了解过,反正我没有 我觉得很有用并且容易忘,所以我记录下来哈哈哈 下面
BOM也叫浏览器对象模型,它提供了很多对象,用于访问浏览器的功能。BOM缺少规范,每个浏览器提供商又按照自己想法去扩展它,那么浏览器共有对象就成了事实的标准。所以,BOM本身是没有标准的或者还没有哪个组织去标准它。
领取专属 10元无门槛券
手把手带您无忧上云