是否有看到有的網站進入網站就會彈出網站公告提示框,今天飛飛和你們分享打開網站就彈出網站公告提示框的JS彈窗代碼,希望可以幫到你~
<script language="javascript">alert('我是飛飛,可以通過【服務器大本營】相識是一種緣分,希望通過我的分享可以讓你更多的了解服務器,當然有服務器需求的朋友可以加微信:137 5120 9102~域名速記:【服務器大本營】首拼.com')</script>
直接復制JS代碼,粘貼到首頁文件,或者需要彈出的頁面即可
近在做項目的時候碰到了使用window.open被瀏覽器攔截的情況, 在本機實驗沒問題, 到了服務器就被攔截了, 火狐有攔截提示, 360瀏覽器攔截提示都沒有, 雖然在自己的環境可以對頁面進行放行,
另外, 可以發現, 當window.open為用戶觸發事件內部或者加載時, 不會被攔截, 一旦將彈出代碼移動到ajax或者一段異步代碼內部, 馬上就出現被攔截的情況了。
使用了一個可定制彈出窗口的外觀、尺寸大小、彈出位置以適應該頁面的window.open()方法, 代碼如下:
<!--
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no')
//寫成一行
-->
參數解釋:
window.open 彈出新窗口的命令;
page.html 彈出新窗口的文件名;
newwindow 彈出窗口的名字(不是文件名), 可用空''代替;
height=100 窗口高度;
top=0 窗口距離屏幕上方的像素值;
left=0 窗口距離屏幕左側的像素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄;
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態欄內的信息(通常是文件已經打開),yes為允許;
原因分析
當瀏覽器檢測到非用戶操作產生的新彈出窗口, 則會對其進行阻止。因為瀏覽器認為這可能是一個廣告, 不是一個用戶希望看到的頁面。
解決方案:
1、使用a標簽替代
給出如下函數, 將此函數綁定到click的事件回調中, 就可以避免大部分瀏覽器對窗口彈出的攔截:
function newWin(url, id) {
var a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('target', '_blank'); // 這里可以改為top, 防止彈出多個窗口
a.setAttribute('id', id);
// 防止反復添加
if(!document.getElementById(id)) {
document.body.appendChild(a);
}
a.click();
}
2、使用form的submit方法打開一個頁面
這種方法需要構造一個from, 然后由js代碼觸發form的submit, 將表單提交到一個新的頁面, 如:
$("#ID").attr('target', '_blank');
$("#ID").submit();
大家注意, 以上兩種方法不適合放在ajax的回調函數中, 如果放在回調函數中, 依然會被瀏覽器攔截。
3、終極解決方案–先彈出窗口, 然后重定向
第三種方案, 其實是一種變通方案, 核心思想是: 先通過用戶點擊打開頁面, 然后再對頁面進行重定向。示例代碼如下:
xx.addEventListener('click', function () {
// 打開頁面,此處最好使用提示頁面
var newTab=window.open('about:blank');
ajax().done(function() {
// 重定向到目標頁面
newWin.location.href = 'target url';
});
});
以上方法其實是打開了兩個地址, 所以建議大家打開第一個地址的時候給出一個類似'當前頁面正在加載中,請稍后。。'的簡單提示頁, 這樣可以避免打開兩次真正的目標頁面, 讓用戶察覺到頁面的重定向。
補充:
JS打開新窗口的2種方式
1.超鏈接
<ahref="http://www.xxxxxx.com" title="標題">Hello world</a>
等效于js代碼
window.location.href="http://www.xxxxxx.com"; //在同當前窗口中打開窗口
2.超鏈接
<a href="http://www.xxxxxx.com" title="標題" target="_blank">Hello world</a>
等效于js代碼
window.open("www.xxxxxx.com"); //在另外新建窗口中打開窗口
3、關閉新窗口:
段JavaScript腳本程序, 負責關閉窗口, 如果網頁不是通過腳本程序打開的(window.open()), 調用window.close()腳本關閉窗口前, 必須先將window.opener對象置為null,
否則瀏覽器(IE7、IE8)會彈出一個確定關閉的對話框。
解決方案有以下幾種方法:
1.指向自己關閉法
<script language="javaScript">
function closeWindow()
{
window.opener = null;
window.open(' ', '_self', ' ');
window.close();
}
</script>
<input type='button' value='關閉窗口' onClick="closeWindow()">
2.框架top關閉法
<script language="javaScript">
function closeWindow()
{
window.opener = null;
window.open('', '_top', '');
window.parent.close();
}
</script>
<input type='button' value='關閉窗口' onClick="closeWindow()">
3.另外還有一種網上常用的方法, 不過似乎對IE8不起作用但在IE6上是中簡單的直接關閉的方法
*請認真填寫需求信息,我們會在24小時內與您取得聯系。