0

我在 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 弹出窗口。我们该怎么做呢?任何帮助表示赞赏。

4

1 回答 1

0

我发现我更喜欢使用元素来实现相同的效果,而不是弹出窗口,因为现在大多数浏览器都有弹出窗口阻止程序。使用 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。这样,用户可以阅读信息,然后关闭弹出窗口,就像它是一个对话框一样。

于 2013-04-09T18:39:30.613 回答