再具体说一下现在的需求:

如上界面:在新闻发布界面有一个按钮,在点击按钮的时候我需要直接把这个打开的选项卡关闭

实现思路:

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

最新文章

  1. Hololens入门之语音识别(语音命令)
  2. CSS 选择器(转)
  3. js文件合并,压缩,缓存,延迟加载
  4. 【leetcode】Balanced Binary Tree(middle)
  5. Apache CXF 102 CXF with REST
  6. 【HDOJ】2955 Robberies
  7. sql server删除主键约束所想到的
  8. python系列之 - 并发编程(进程池,线程池,协程)
  9. mysql获取表中日期的年月日时分秒
  10. G - Intersecting Rectangles Kattis - intersectingrectangles (扫描线)(判断多个矩形相交)
  11. vs2015 停 在 update kb2999226 一直不动
  12. iOS8新特性(2)——UIPopoverController和UIPresentationController
  13. net::ERR_CONNECTION_RESET 报错原因
  14. SparkGraphx计算指定节点的N度关系节点
  15. c# 的传递参数值传递与传递引用的区别,ref与out区别
  16. java图形化界面-------鼠标监听画圆----------使用匿名类
  17. Oracle——判断对象是否存在(未完工)
  18. Windows系统 为 Visual Studio软件 搭建 OpenCV2 开发环境
  19. [BZOJ2152]聪聪可可 点分治/树形dp
  20. Go语言之并发编程(四)

热门文章

  1. C#加密解密(AES)-AESHelper
  2. phpstudy所需运行库
  3. 802.1X基本配置
  4. 有个网站秒破mdb访问密码
  5. vs2013设置不生成.sdf和ipch文件
  6. Educational Codeforces Round 73 (Rated for Div. 2)F(线段树,扫描线)
  7. MySQL中case when的基本用法总结
  8. MySQL忘记密码如何重置
  9. idea修改项目编码
  10. LIBRA查询