最近做項目的時候遇到點擊支付按鈕后判斷用戶是否達(dá)到購買資格薇缅,達(dá)到的話就新建一個窗口打開新的鏈接翻屈,所以直接用window.location.href不行懦鼠,會在當(dāng)前頁面打開支付鏈接頁面容诬,最佳選擇是window.open粱快,但是出于瀏覽器安全機(jī)制的考慮(或許還有其他秩彤,暫時沒研究)叔扼,凡事非用戶觸發(fā)的事件都會被瀏覽器攔截,而且window.open()在IE6-IE8下存在兼容性的問題漫雷,解決思路瓜富,判斷瀏覽器類型,IE8以下創(chuàng)建a標(biāo)簽降盹,模擬click事件后移除該元素与柑,其他瀏覽器創(chuàng)建window.open()變量后再將window.location.href指向需要打開的鏈接,原理是打開一個新窗口再重定向當(dāng)前頁面的URL蓄坏。
function openBankBillUrl() {
var url = goNewTabUrl;
var flag = $.support.leadingWhitespace;
if (!flag) { // IE8-
var referLink = document.createElement('a');
referLink.href=url;
referLink.target='_blank';
document.body.appendChild(referLink);
referLink.click();
referLink.remove();
}else { // other browser
var payPage = window.open();
payPage.location.href = url;
}
}
$(".btn").click(function() {
$.ajax({
url: ajaxUrl,
ansyc: false,
dataType: dataType
}).then({
if (/*滿足支付的條件*/) {
openBankBillUrl();
}else {
// other code
}
});
});
由于完整的操作涉及到公司的業(yè)務(wù)代碼价捧,不方便分享,現(xiàn)在將整體的思路寫出涡戳,記錄一下這次的踩坑之旅(-)