window.open()開啟頁面的幾種方法
阿新 • • 發佈:2018-11-26
[javascript]
view plain
copy
window.open是javascript函式,該函式的作用是開啟一個新視窗或這改變原來的視窗,不過一般用來的是開啟新視窗,因為修改原來的網頁地址,可以有另一個函式,那就是window.location,他可以重定向網頁地址,使網頁跳轉到另一個頁面。
方法3: 使用其他控制元件呼叫<a>標籤的_blank屬性彈出:不能在ajax內彈出,建議使用方法2。
- 主要原理:讓瀏覽器以為是使用者主動點選的,因此可以利用onclick或者利用<a>標籤的_blank屬性開啟頁面
- function OpenWindow(n, t, i, r) {
- var u = (screen.width - t) / 2 - r,
- f = (screen.height - i) / 2 - r,
- e = window.open(n, "_blank"
- e.focus()
- }
window.open是javascript函式,該函式的作用是開啟一個新視窗或這改變原來的視窗,不過一般用來的是開啟新視窗,因為修改原來的網頁地址,可以有另一個函式,那就是window.location,他可以重定向網頁地址,使網頁跳轉到另一個頁面。
一般情況下,如果你直接在js中呼叫window.open()函式去開啟一個新視窗,瀏覽器會攔截你,認為你將彈出廣告等使用者不想得到的窗體,所以如果不想讓瀏覽器攔截你,你可以將這個函式改為使用者點選時觸發,這樣瀏覽器就認為是使用者想訪問這個頁面,而不是你直接彈出給使用者。
現在直接使用js觸發按鈕的click有時候不能彈出新頁面,因此需要使用者點選控制元件操作或者構造或隱藏<a>標籤彈出。
方法1:
所以常用的方法就是在按鈕或者超連結里加入onclick事件,如<a href="javascript:void(0)" onclick="window.open();return false;">click me</a>這樣使用者點選這個超連結,瀏覽器會認為它是開啟一個新的連結,所以就不會攔截。
[html] view plain copy
- <a href="javascript:void(0)" onclick="window.open('http://www.baidu.com','_blank','width=300,height=400,toolbars=0,resiable=1,left=300,top=300');return false;">click me</a>
方法2(優化方法1):
先用window.open開啟一個視窗,然後修改地址。如var tempwindow=window.open('_blank');開啟一個視窗,然後用tempwindow.location='http://www.baidu.com';使這個視窗跳轉到百度,這樣就會呈現彈出百度視窗的效果了。
[javascript] view plain copy
- <script>
- var new_window = null;
- //加一個確認,可以在這個方法裡面執行很多適用於自己的判斷...
- function sure_open() {
- if (confirm('確定要開啟php愛好者嗎?'))
- open_window(url);
- else
- new_window.close(); //關閉視窗
- }
- function open_window(url) {
- new_window.location.href = url;
- }
- </script>
- <input type="button" onclick="new_window = window.open(); open_window('http://www.justwinit.cn')" value="開啟justwinit.cn" />
- <input type="button" onclick="new_window.close();" value="關閉開啟的justwinit.cn" />
或者,可以非同步處理
[javascript] view plain copy
- xx.addEventListener(‘click‘, function () {
- // 開啟頁面,此處最好使用提示頁面
- var newWin = window.open(‘loading page‘);
- ajax().done(function() {
- // 重定向到目標頁面
- newWin.location.href = ‘target url‘;
- });
- });
方法3: 使用其他控制元件呼叫<a>標籤的_blank屬性彈出:不能在ajax內彈出,建議使用方法2。
[javascript] view plain copy
- function newWin(url, id) {
- var a = document.createElement(‘a‘);
- a.setAttribute(‘href‘, url);
- a.setAttribute(‘target‘, ‘_blank‘);
- a.setAttribute(‘id‘, id);
- // 防止反覆新增
- if(!document.getElementById(id)) {
- document.body.appendChild(a);
- }
- a.click();
- }