我发现我更喜欢使用元素来实现相同的效果,而不是弹出窗口,因为现在大多数浏览器都有弹出窗口阻止程序。使用 div“弹出窗口”,没有什么可以阻止它。
首先,您需要在 HTML 代码中包含 div。哪里都好。这是您的内容将显示的区域。它必须有一个 id 标签(在本例中为“popup”)
<div id='popup' style='visibility: hidden; position: absolute; width: 500px; height: 300px;'></div>
接下来,您需要将请求页面并从服务器接收响应的 javascript 代码。这是我的标准功能:
function get_(url, func)
{
var http;
try { http = new XMLHttpRequest(); } catch (e) { try { http = new ActiveXObject(\"Msxml2.XMLHTTP\"); } catch (e) { try { http = new ActiveXObject(\"Microsoft.XMLHTTP\"); } catch (e) { alert(\"Failed to load!\"); return false; } } }
http.open(\"GET\", url, true);
http.onreadystatechange = function() { if(http.readyState == 4) { func(http); } }
http.send(null);
}
对于此示例,我将只使用一个按钮来使弹出窗口起作用,以便您可以了解如何使用代码。以下是所有内容:
<html>
<head>
<script language='javascript'><!--
function get_(url, func)
{
var http;
try { http = new XMLHttpRequest(); } catch (e) { try { http = new ActiveXObject(\"Msxml2.XMLHTTP\"); } catch (e) { try { http = new ActiveXObject(\"Microsoft.XMLHTTP\"); } catch (e) { alert(\"Your browser broke!\"); return false; } } }
http.open(\"GET\", url, true);
http.onreadystatechange = function() { if(http.readyState == 4) { func(http); } }
http.send(null);
}
function getPopup()
{
get_("url_of_popup_source.html", showPopup);
}
function showPopup(h)
{
var p = document.getElementById("popop");
p.innerHTML = h.responseText;
p.style.visibility = "visible";
}
function hidePopup()
{
p.style.visibility = "hidden";
}
--></script>
</head>
<body>
<button onClick='showPopup();'>Click here</button>
<div id='popup' style='visibility: hidden; position: absolute; width: 500px; height: 300px; top:100px; left:200px;'></div>
</body>
</html>
这显然是非常基本的。您也可以调整弹出窗口的大小和绝对位置。但主要思想是您不再使用实际的弹出窗口来获取信息给用户,因为它可能会被阻止。
我包含的额外功能“hidePopup”将关闭弹出窗口。我建议您在“url_of_popup_source.html”源中包含一个按钮,该按钮在单击时执行 hidePopup。这样,用户可以阅读信息,然后关闭弹出窗口,就像它是一个对话框一样。