博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用window.open切换到之前打开过的新页面
阅读量:7153 次
发布时间:2019-06-29

本文共 2839 字,大约阅读时间需要 9 分钟。

使用window.open打开页面,不刷新已经打开过的页面

我的思路是:把已经打开过的页面的title和window对象存起来,如果要打开的页面的title已经存在了,就直接foucs到已存在的页面window对象,不新调用open函数。

var iframeWin = [];    $("#btn-open-in-new-win").on("click",function () {        var iframe =  $(".iframe-box:visible iframe");        if(!iframe.length)            return;        var id = $(iframe).contents().find("title").html();        var win = iframeWin.search(id,['id'],true);        if(!win.length){            win = window.open(iframe[0].src,id);            iframeWin.push({id:id,win:win});        }        else if (win[0].win.closed) {            iframeWin.removeIfExited({id:id},['id']);            win = window.open(iframe[0].src,id);            iframeWin.push({id:id,win:win});        }else{            win[0].win.focus();        }    });

之前写的js数组方法

/** *在数组中查找值 * value: 值 或 值数组 * props: 对象数组的属性名称数组,属性名称,不可以为null * isEquals 是否不是匹配,而是相等 */Array.prototype.search = function(value, props, isEquals) {    var len,results= [];    if(value && value instanceof  Array){        var resultsArr = [],resultsTemp;        len = value.length;        if(!len){            return this;        }        for (var i = 0; i < len; i++) {            resultsTemp = this.search(value[i],props,isEquals);            for (var j = 0; j < resultsTemp.length; j++) {                resultsArr.push(resultsTemp[j]);            }        }        return resultsArr;    }    if (value == false) {    } else if (null == value || "" == value)        return this;    len = this.length;    var prop;    for (var i = 0; i < len; i++) {        if (props) {            for (var j = 0; j < props.length; j++) {                prop = this[i][props[j]];                if (isEquals) {                    if (prop == value) {                        if (value == false && prop + "" == "") {                            continue;                        }                        results.push(this[i]);                        break;                    }                } else if (prop && (prop + "").indexOf(value) != -1) {                    results.push(this[i]);                    break;                }            }        } else {            for ( var j in this[i]) {                if (j && (j + "").indexOf(value) != -1) {                    results.push(this[i]);                    break;                }            }        }    }    return results;};/** *在数组中移除值 * obj: 值或对象 * prop: 对象数组的属性名称 用作判断数组中是否存在属性为prop的obj对象;可以为null,为null是认为数组obj为基本数据类型 */Array.prototype.removeIfExited = function(obj, prop) {    var len = this.length;    for (var i = 0; i < len; i++) {        if (prop && (this[i][prop] === obj[prop])) {            this.splice(i, 1);            return true;        } else if (this[i] === obj) {            this.splice(i, 1);            return true;        }    }    return false;};

转载于:https://blog.51cto.com/beetsuan/2364522

你可能感兴趣的文章
标签的使用——html+css学习笔记(一)
查看>>
浅析String
查看>>
打我吧,不写了
查看>>
一个灵活的AssetBundle打包工具
查看>>
架构笔记
查看>>
lua热更框架之XLua
查看>>
Python与Cisco 的事儿
查看>>
RHEL6内核升级及 LVM管理
查看>>
Zabbix简介
查看>>
使用PIL改变图像格式及尺寸
查看>>
写在2014年前
查看>>
富士通:寻找重塑的力量
查看>>
我的友情链接
查看>>
python将日志导入数据库代码案例 3
查看>>
CodeIngiter 2.2.x 与 Smarty3 整合的方案 解决CI的不足
查看>>
Windows L2TP客户端设置
查看>>
How to Run Your Own Git Server
查看>>
Servlet之sendRedirect和getRequestDispatch
查看>>
zabbix服务器监控交换机添加图像Graphs
查看>>
Windows Server 2012显示桌面图标!
查看>>