您好,登錄后才能下訂單哦!
我的思路是:把已經(jīng)打開過的頁面的title和window對(duì)象存起來,如果要打開的頁面的title已經(jīng)存在了,就直接foucs到已存在的頁面window對(duì)象,不新調(diào)用open函數(shù)。
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數(shù)組方法
/**
*在數(shù)組中查找值
* value: 值 或 值數(shù)組
* props: 對(duì)象數(shù)組的屬性名稱數(shù)組,屬性名稱,不可以為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;
};
/**
*在數(shù)組中移除值
* obj: 值或?qū)ο? * prop: 對(duì)象數(shù)組的屬性名稱 用作判斷數(shù)組中是否存在屬性為prop的obj對(duì)象;可以為null,為null是認(rèn)為數(shù)組obj為基本數(shù)據(jù)類型
*/
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;
};
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。