2013-06-20 30 views
0

我正在嘗試編寫一個書籤,它接受用戶所在的站點,執行一些解析和ajax請求,並打開一個新窗口info作爲參數。如果我試圖做任何事情,除了打開一個新窗口,書籤窗口會被阻止

下面是我得到了什麼:

<a href="javascript: 
(function($) 
{ 
    var a, http, options, request, st, u; 

    u = document.location.hostname; 

    a = u.split('.'); 

    st = a[a.length - 2]; 
    path = 'http://ajax.googleapis.com/ajax/services/feed/find?callback=?&v=1.0&q=' + st; 
    $.ajax 
    ({ 
    type: 'GET', 
    url: path, 
    async: false, 
dataType: 'json', 
success: function(data) 
{ 
    var targ = data['responseData']['entries'][0]['url']; 
    window.open ('http://localhost:3000/bmfeed?targ='+targ,'menubar=1,resizable=1,width=350,height=250'); 
} 
    }); 
})(jQuery) 

"> newwindow </a> 

它找到正確的網址,但被彈出窗口攔截器阻止了新窗口。

相反,如果我只是

<a href='javascript: window.open ("http://localhost:3000?targ=asdfasdf","mywindow","menubar=1,resizable=1,width=350,height=250");'> oneline </a> 

它會打開一個新標籤不羈。我認爲不同的是,我在第一個例子中進行了一些解析,這是瀏覽器不喜歡的。

有沒有辦法讓我的蛋糕吃呢?謝謝一堆!

+1

window.open必須通過點擊一個按鈕或鏈接來調用,小書籤就像JS一樣神奇地發生。你可以附加一個鏈接到文檔來調用最後一行onclick,使用iframe,或設置location.href而不是使用彈出。 – dandavis

回答

0

我認爲不同的是,我做了一些分析在第一個例子

沒有,問題是異步AJAX。瀏覽器在決定是否阻止之前試圖確定用戶動作是否啓動了新窗口。爲了讓新窗口無阻擋地打開,用戶點擊和窗口之間必須有一個「直接行動」。異步AJAX打破了直線。 (同步AJAX可能工作,我不確定。)

有沒有辦法讓我的蛋糕吃呢?

沒有完美的解決方案,但在你有什麼改進,現在是建立在頁面上彈出了DIV類似於<a href="http://localhost:3000/bmfeed?targ=..." target="_blank">click here to open the new window</a>的鏈接。

相關問題