bootstrap选项卡页面中如何关闭当前选项卡及页面
再具体说一下现在的需求:

如上界面:在新闻发布界面有一个按钮,在点击按钮的时候我需要直接把这个打开的选项卡关闭
实现思路:
1)关闭选项卡对应的页面 2)去除上方选项卡 3)激活前一个选项卡
1)关闭选项卡对应的界面:
使用jquery我们很容易想到window.close()关闭当前界面,但是此时浏览器报了警告提示:
Scripts may close only the windows that were opened by it
而且也并没有能够关闭我想关闭的界面,百度之后有三种方案:
(1)
window.open('','_self','');
window.close();
(2)
open(location, '_self').close();
这两种我都试过了,还是一样有警告信息,并且无法关闭窗口。
最后这个有用的方案:
window.location.href="about:blank";
window.close();
终于能够关闭界面了,第一步实现了。
2)去除上方选项卡
这一步也涉及到一个问题,就是我在选项卡里面的这个界面如何能够获取到这个选项卡呢
我们都知道,选项卡点击之后,会显示出对应的iframe,而我们现在能操作的界面就是这个iframe里面显示的界面
所以我们需要在当前页面的父页面,也就是iframe所在的页面中获取我们需要的选项卡元素:
var nowTab = $("#admui-siteConTabs > div.contabs-scroll.float-left > ul > li.active", parent.document);
通过jquery中的选择器,我们在后面加了parent.document参数,这样就是在父页面中进行元素的选择。
然后使用nowTab.remove()就可以实现第二步了
3)激活前一个选项卡
获取到前一个选项卡的方法很简单,我们上一步已经获取到了这个选项卡,此时只需要nowTab.prev()就可以获取到前一个选项卡了
如何进行激活呢?我们分析一下元素构成:

可以看到,每一个选项卡对应一个li标签,这个标签下方有一个a标签,我们只要激活这个a标签就可以了
获取到a标签:
nowTab.prev().find('a')
激活的时候还有一个坑,就是jquery和原生js激活a标签是不一样的:
$("#id").click()这种方法并不能实现a标签的点击事件
原生js不受限制,直接document.getElementById("id").click();
我们这里没法使用document.getElementById函数,所以需要用jquery函数
只需要将jquery对象转换成DOM对象就可以了,实现也很简单:
$("#id")[0].click()
没错,取到对象中的第一个元素就是DOM对象,所以我们现在需要使用
nowTab.prev().find('a')[0].click()
这样第三步也实现了。
最后把比较完整的代码放进来:
if ($.trim($("#title").val()) == "" && $.trim(getContent()) == "") { // 还未输入内容
var nowTab = $("#admui-siteConTabs > div.contabs-scroll.float-left > ul > li.active", parent.document);
window.location.href="about:blank";
window.close();
nowTab.prev().find('a')[0].click();
nowTab.remove();
} else {
....
}
如果觉得有用就帮忙推荐一下吧。
此博客为博主原创,转载请注明出处:https://www.cnblogs.com/guo-xu/p/12064088.html
bootstrap选项卡页面中如何关闭当前选项卡及页面的更多相关文章
- 系统重装助手教你如何在Microsoft Edge中恢复“关闭所有选项卡”警告
在Microsoft Edge中,当您打开多个选项卡时,浏览器将显示“您要关闭所有选项卡吗?” 警告,以防止您意外关闭重要标签. 通常,在没有第二个想法的情况下,您会立即禁用此功能,检查提示中的“始终 ...
- HTML页面中直接加载其他JSP页面
1.在经典的框架中填充页面时 要填充2处的页面,2处为内容页面,是另外的一个JSP页面 2.左侧页面代码 <%@ page language="java" import=&q ...
- layer.open打开一个新的jsp页面,如何关闭并刷新父页面问题
layer.open打开一个新的jsp页面弹框,如何关闭呢? 在新的页面提交完毕之后,关闭并刷新父页面列表. layer.closeAll(); parent.layer.closeAll(); wi ...
- vue2.0在页面中自定义组件模块,以及页面与组件之间的数据传递
1,在初始文件index.html中加入要引入的模块,注意驼峰命名的方式(我就是没写成驼峰,报错) <!DOCTYPE html> <html> <head> &l ...
- Jsp页面中使用fckeditor控件的两种方法 [转]
fckeditor控件请到官方网站下载http://www.fckeditor.net,本例主要用到FCKeditor_2.6.3.zip.fckeditor-java-demo-2.4.1.zip. ...
- angluarjs中页面初始化的时候会出现语法{{}}在页面中问题
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题.出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这 ...
- jsp页面中的EL表达式不被解析的问题
原因:问题在web.xml配置文件上,web.xml声明部分一般分为如下版本的xsd, web-app_2_2.xsd web-app_2_3.xsd web-app_2_4.xsd web-app_ ...
- Jsp页面中的中文乱码问题解决
Jsp页面中的中文乱码问题解决 在编写Jsp页面的时候,发现写入其中的中文在浏览器浏览的时候会出现乱码的情况. 出现乱码的原因分析: 因为页面中对自己的编码格式的声明和页面的实际编码格式不相同,而浏览 ...
- Selenium WebDriver-判断页面中某一元素是否已经显示,通常用于断言
判断界面中某一元素是否已经呈现,多用于断言,代码如下: #encoding=utf-8 import unittest import time from selenium import webdriv ...
随机推荐
- python应用-pycharm新建模板默认添加shebang编码作者时间等信息
1.pycharm4.5激活码 用户名: yueting3527 注册码: ===== LICENSE BEGIN ===== 93347-12042010 00001FMHemWIs"6w ...
- 小程序云函数调用webservice接口
https://www.jianshu.com/p/2692e56251ac 小程序最近新出来了云开发能力,主要依赖了node.js(运行在服务器上的js),可以让我们在没有服务器的情况下,使用云开发 ...
- Ext里dialog弹窗关闭与父窗口刷新问题总结
1.弹出弹窗的js代码 var dlg = new J.dialog({ id: 'unDelTel', title:'缴费', page:encodeURI('<%=basePath%> ...
- 虚拟机设置固定IP从而使同一局域网可以访问
没有ifcfg-eth0 时:https://www.cnblogs.com/itboxue/p/11186910.html (1)关机,将网络模式设置成桥接模式 (2)开机 进入 cd /etc/s ...
- php对象、面向对象
对象 万物皆对象 一切可见之物都是对象 一切不可见之物也是(抽象的事物也是对象): 对象包含两部分 1对象的组成元素 对象的数据模型又称为对象的属性,又被称为对象的成员变量 2.对象的行为 是对象的行 ...
- HtmlUnit-API的使用就介绍
转自:https://www.cnblogs.com/luotinghao/p/3800054.html 网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源Htm ...
- [原]NTP时钟同步服务设置
服务器列表 192.168.0.2 ntp服务端 192.168.0.3 ntp客户端 192.168.0.4 ntp客户端 192.168.0.5 ntp客户端 注:以下操作均以root操作 一.N ...
- Scrapy 爬取动态页面
目前绝大多数的网站的页面都是冬天页面,动态页面中的部分内容是浏览器运行页面中的JavaScript 脚本动态生成的,爬取相对比较困难 先来看一个很简单的动态页面的例子,在浏览器中打开 http://q ...
- 第一个Tornado程序
环境:Python3.8 系统:win10 1903 工具:pycharm2019.3 import tornado.web # web服务基本功能都封装在此模块中 import tornado.io ...
- 二十一 Struts的数据校验两种方式:手动编码和xml校验
数据的校验: 一.前台校验:JS校验 JS的校验不是必须的,JS可以被绕行,可以提升用户体验 二.后台校验:编码校验 必须的校验 三.校验的方式: 手动编码(不建议使用) 配置文件(支持) 手动编码的 ...