Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
是否有看到有的網(wǎng)站進(jìn)入網(wǎng)站就會彈出網(wǎng)站公告提示框,今天飛飛和你們分享打開網(wǎng)站就彈出網(wǎng)站公告提示框的JS彈窗代碼,希望可以幫到你~
<script language="javascript">alert('我是飛飛,可以通過【服務(wù)器大本營】相識是一種緣分,希望通過我的分享可以讓你更多的了解服務(wù)器,當(dāng)然有服務(wù)器需求的朋友可以加微信:137 5120 9102~域名速記:【服務(wù)器大本營】首拼.com')</script>
直接復(fù)制JS代碼,粘貼到首頁文件,或者需要彈出的頁面即可
近在做項(xiàng)目的時(shí)候碰到了使用window.open被瀏覽器攔截的情況, 在本機(jī)實(shí)驗(yàn)沒問題, 到了服務(wù)器就被攔截了, 火狐有攔截提示, 360瀏覽器攔截提示都沒有, 雖然在自己的環(huán)境可以對頁面進(jìn)行放行,
另外, 可以發(fā)現(xiàn), 當(dāng)window.open為用戶觸發(fā)事件內(nèi)部或者加載時(shí), 不會被攔截, 一旦將彈出代碼移動到ajax或者一段異步代碼內(nèi)部, 馬上就出現(xiàn)被攔截的情況了。
使用了一個(gè)可定制彈出窗口的外觀、尺寸大小、彈出位置以適應(yīng)該頁面的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')
//寫成一行
-->
參數(shù)解釋:
window.open 彈出新窗口的命令;
page.html 彈出新窗口的文件名;
newwindow 彈出窗口的名字(不是文件名), 可用空''代替;
height=100 窗口高度;
top=0 窗口距離屏幕上方的像素值;
left=0 窗口距離屏幕左側(cè)的像素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動欄;
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態(tài)欄內(nèi)的信息(通常是文件已經(jīng)打開),yes為允許;
原因分析
當(dāng)瀏覽器檢測到非用戶操作產(chǎn)生的新彈出窗口, 則會對其進(jìn)行阻止。因?yàn)闉g覽器認(rèn)為這可能是一個(gè)廣告, 不是一個(gè)用戶希望看到的頁面。
解決方案:
1、使用a標(biāo)簽替代
給出如下函數(shù), 將此函數(shù)綁定到click的事件回調(diào)中, 就可以避免大部分瀏覽器對窗口彈出的攔截:
function newWin(url, id) {
var a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('target', '_blank'); // 這里可以改為top, 防止彈出多個(gè)窗口
a.setAttribute('id', id);
// 防止反復(fù)添加
if(!document.getElementById(id)) {
document.body.appendChild(a);
}
a.click();
}
2、使用form的submit方法打開一個(gè)頁面
這種方法需要構(gòu)造一個(gè)from, 然后由js代碼觸發(fā)form的submit, 將表單提交到一個(gè)新的頁面, 如:
$("#ID").attr('target', '_blank');
$("#ID").submit();
大家注意, 以上兩種方法不適合放在ajax的回調(diào)函數(shù)中, 如果放在回調(diào)函數(shù)中, 依然會被瀏覽器攔截。
3、終極解決方案–先彈出窗口, 然后重定向
第三種方案, 其實(shí)是一種變通方案, 核心思想是: 先通過用戶點(diǎn)擊打開頁面, 然后再對頁面進(jìn)行重定向。示例代碼如下:
xx.addEventListener('click', function () {
// 打開頁面,此處最好使用提示頁面
var newTab=window.open('about:blank');
ajax().done(function() {
// 重定向到目標(biāo)頁面
newWin.location.href = 'target url';
});
});
以上方法其實(shí)是打開了兩個(gè)地址, 所以建議大家打開第一個(gè)地址的時(shí)候給出一個(gè)類似'當(dāng)前頁面正在加載中,請稍后。。'的簡單提示頁, 這樣可以避免打開兩次真正的目標(biāo)頁面, 讓用戶察覺到頁面的重定向。
補(bǔ)充:
JS打開新窗口的2種方式
1.超鏈接
<ahref="http://www.xxxxxx.com" title="標(biāo)題">Hello world</a>
等效于js代碼
window.location.href="http://www.xxxxxx.com"; //在同當(dāng)前窗口中打開窗口
2.超鏈接
<a href="http://www.xxxxxx.com" title="標(biāo)題" target="_blank">Hello world</a>
等效于js代碼
window.open("www.xxxxxx.com"); //在另外新建窗口中打開窗口
3、關(guān)閉新窗口:
擊右上方紅色按鈕關(guān)注“小鄭搞碼事”,每天都能學(xué)到知識,搞懂一個(gè)問題!
大家好!我是/小鄭搞碼事/的小鄭
今天和大家分享一下JS如何操作瀏覽器窗口。只講如何打開一個(gè)新窗口
先來看效果圖
上面這個(gè)圖界面效果就是我們要實(shí)現(xiàn)的。
我們常常需要?jiǎng)?chuàng)建一個(gè)新窗口,用來向用戶顯示額外的信息,同時(shí)又避免他們正在閱讀的信息消失。從實(shí)現(xiàn)方案上來看,盡管我們可以用HTML打開一個(gè)新的瀏覽器窗口,但是使用JavaScript可以對新窗口的內(nèi)容和特性進(jìn)行更多的控制。
接下來,我們看一下怎么實(shí)現(xiàn)的
定義一個(gè)打開新窗口的函數(shù)newWindow。如上面代碼所示,變量catWindow包含一個(gè)新的窗口對象,這個(gè)對象引用圖像文件icon.png,這個(gè)新窗口的名稱是catWin,必須設(shè)置名稱,因?yàn)槲覀円院罂赡芟M赼或另一個(gè)腳本中引用這個(gè)窗口。新窗口的寬度是350像素,高度是260像素,位置是左邊400,上邊400。
頁面中,包含一個(gè)onload事件處理程序,它調(diào)用newWinLinks函數(shù),newWinLinks循環(huán)遍歷頁面上的a,檢查是否有任何a包含class屬性值newWin。如果有,就設(shè)置這個(gè)a元素的onclick事件處理程序,從而,當(dāng)點(diǎn)擊這個(gè)a時(shí),調(diào)用newWindow函數(shù)。
總結(jié)一下
需要注意兩個(gè)地方:
1、newWindow中,在寬度和高度參數(shù)中的逗號之間不能有任何空格,如果有空格,那么腳本可能在某些瀏覽器中無效,總地來說,當(dāng)腳本出現(xiàn)錯(cuò)誤,需要進(jìn)行高度時(shí),要首先查找這樣的小問題。
2、比如向窗口中添加參數(shù)時(shí),希望窗口具有工具欄,地址欄,滾動條
toolbar=yes,location=yes,scrollbars=yes
參數(shù)默認(rèn)是no,可以不填。當(dāng)然瀏覽器上表現(xiàn)也有不同,需要知道。
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。