我在java类中使用以下代码来添加到表网格的链接。下面的代码是特定于公司内部API的。
/***MyLink.java*********/
myLink.setOnClick( "getURL", return false;);
addToolBarItem("myLink");
/***MyLinkJSFPage.jsf****
urlValue= "www.google.com";
在jsf页面中,我必须向getURL javascript发出ajax请求,这将打开一个弹出窗口,其中包含来自jsf页面的url。基本上,当用户单击链接时,应该用ajax请求填充一个javascript弹出窗口。我们该怎么做呢?
我发现比起弹出窗口,我更喜欢使用元素来达到同样的效果,因为现在大多数浏览器都有弹出窗口拦截器。使用div "popup",没有任何东西会阻止它。
首先,需要在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。这样,用户可以阅读信息,然后关闭弹出框,就好像它是一个对话框。