2015-07-07 2 views
0

Каждый раз, когда конкретная страница перезагружается, всплывающее окно открывается в google-поиск того, что содержится во втором. Проблема в том, что он продолжает открываться в новом окне, а не внутри исходного всплывающего окна.window.open не открывается снова в том же окне

var td_name = $("td:eq(1)"); 
var td_text = td_name.text(); 
window.open("http://www.google.com/search?q="+td_text+"", "myWindow", '_blank'); 

ответ

2

Модель безопасности браузера помешала этому некоторое время (понятно). Он будет работать, если «перезагрузка» выполняется с помощью JS, а не с полным обновлением браузера.

Смотрите эту связанный ответ для обхода с помощью ссылок окна:

No. Без ссылки на окна, вы не можете найти его снова, по имени или иным образом. Нет коллекции окон.

UPDATE: Вот как вы можете сделать это самостоятельно:

var windows = {}; 
function openWindow(url, name, features) { 
    windows[name] = window.open(url, name, features); 
    return windows[name]; 
} 

Теперь openWindow всегда будет открыть окно, и если окно уже существует, он будет загрузить заданный URL в этом окне и верните ссылку на это окно. Теперь вы можете также реализовать findWindow:

function findWindow(name) { 
    return windows[name]; 
} 

который будет возвращать в окно, если оно существует, или undefined.

Вы также должны иметь closeWindow, так что вы не держите ссылки на окна, которые вы открыли себя:

function closeWindow(name) { 
    var window = windows[name]; 
    if(window) { 
     window.close(); 
     delete windows[name]; 
    } 
} 

Если это не представляется возможным, в чем смысл давать имена окон?

Это имя внутреннего вида браузера для управления окнами. Если вы звоните window.open с тем же именем, он не откроет новое окно, а вместо этого загрузит URL-адрес в ранее открытое окно. Есть еще несколько вещей, от MDN window.open():

Если окно с именем strWindowName уже существует, то strUrl загружается в существующем окне. В этом случае возвращаемое значение - это существующее окно, а strWindowFeatures игнорируется. Предоставление пустой строки для strUrl - это способ получить ссылку на открытое окно по его названию без изменения местоположения окна. К откройте новое окно при каждом вызове window.open(), используйте значение _blank для strWindowName.

ИСТОЧНИК:https://stackoverflow.com/a/9364899

+0

Это, кажется, гонг путь над моей головой по какой-то причине. Будет ли теперь правильный формат? Это не работает для меня.'var windows = {}; функция openWindow ("http://www.google.com/search?q=" + td_text + "", "myWindow", '_blank') { windows [myWindow] = window.open ("http: // www .google.com/search? q = "+ td_text +" "," myWindow ", '_blank'); окна возврата [myWindow]; } ' –

+0

@BrandonHellman ответ, который я привел, не будет работать вокруг полного обновления страницы. Я не знаю, как это сделать. Я думаю, что это намеренно невозможно по соображениям безопасности. –

0

попробовать этот

 function openWindow(td_text) 
       { 

        var strurl ="http://www.google.com/search?q="+td_text;    

window.open(strurl,"mywindow","menubar=0,resizable=1,scrollbars=1,width=550,height=200"); 
       } 
     var td_name = $("td:eq(1)"); 
     var td_text = td_name.text(); 
     openWindow(td_text); 
Смежные вопросы