如何使用用AJAX请求填充的javascript调用弹出窗口
how to invoke an pop up window using javascript that gets populated with an AJAX request
我在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。这样,用户可以阅读信息,然后关闭弹出框,就好像它是一个对话框。
相关文章:
- 我需要从php调用javascript或jquery
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 使用html表单中的参数调用JavaScript函数
- 可以´t调用JavaScript中的函数
- 在按钮上调用Javascript函数
- 如何从Objective-C代码中调用javascript代码
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 可以't在Jasmine中调用Javascript函数
- 在page_load事件上调用javascript函数
- 如何在ajax中调用javascript对象的方法
- 如何使用WPF调用JavaScript对象的函数
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 从附加文本调用javascript(订单车)
- 在线程循环中调用JavaScript
- 在指定时间后多次调用Javascript中的函数
- 未调用Javascript onscroll事件
- 如何正确调用Javascript中的匿名函数
- 从字符串调用javascript函数
- 无法从活动调用 javascript 函数