Я бы не рекомендовал использовать новое окно браузера для этой задачи. Попробуйте что-то вроде этого:
var popup = {
open = function () {
if (this.element == null) {
// create new div element to be our popup and store it in the popup object
this.element = document.createElement('div');
this.element.id = "myPopup";
// you don't need a full html document here. Just the stuff you were putting in the <body> tag before
this.element.innerHTML = "<your>html</here>";
// Some bare minimum styles to make this work as a popup. Would be better in a stylesheet
this.element.style = "position: absolute; top: 50px; right: 50px; width: 300px; height: 300px; background-color: #fff;";
}
// Add it to your <body> tag
document.body.appendChild(this.element);
// call whatever setup functions you were calling before
popUpDetails();
},
close = function () {
// get rid of the popup
document.body.removeChild(this.element);
// any other code you want
}
};
// The element you want to trigger the popup
var hoverOverMe = document.getElementById("hoverOverMe");
// set our popup open and close methods to the proper events
hoverOverMe.onmouseover = popup.open;
hoverOverMe.onmouseout = popup.close;
Это должно сделать это. Это намного проще контролировать, чем новое окно браузера. Вы захотите настроить CSS самостоятельно.
EDIT:
Вот инструкции, чтобы сделать это с реальным окном. Повторим еще раз: использование фактического окна - не лучший способ выполнить эту задачу. Стилизованный тег div
, который выглядит как окно, лучше, потому что он предлагает больше контроля, а также стандартизированную функциональность в разных браузерах. Однако, если вы должны использовать окно, вот оно:
// You can use many principles from the example above, but I'll give the quick version
var popup;
var hoverOverMe = document.getElementById("hoverOverMe");
hoverOverMe.onmouseover = function () {
popup = window.open("path_to_content", "popup");
};
hoverOverMe.onmouseout = function () {
popup.close();
};
Работает, но не очень хорошо (ИМХО). Если у пользователя есть свои настройки, такие, что новые окна открываются в новых вкладках (как я), тогда открывается вкладка. Javascript не контролирует это. В Firefox новая вкладка откроется и получит фокус, после чего она немедленно закроется, потому что у hoverOverMe
было запущено событие onmouseout (которое, очевидно, закрывает окно). Я полагаю, у вас будет такая же проблема и с реальным окном.