我接管了一个基于asp.net和vb.net
的开发人员的Web应用程序我正在尝试使用javascript创建一个简单的弹出窗口,但弹出窗口无效。
asp.net代码是
<a class="hover-glow" data-placement="bottom" rel="tooltip"
title="change status"
data-bind="attr: { 'href':'update-status_popup.aspx?i='
+ Id + '&c=' + StatusId }">
<i class="icon icon-random"></i>
</a>
该链接在另一个页面上打开。当打开链接时,它也从数据库中获取ID。
现在要求在弹出窗口中打开链接。
我创建了一个javascript函数调用popup()。代码如下:
<script type="text/javascript" charset="utf-8">
function popup() {
var url = 'update-status_popup.aspx?i=' + Id + '&c=' + StatusId;
window.open(url);
}
</script>
并编辑html代码如下:
<a class="hover-glow" data-placement="bottom" rel="tooltip"
title="change status"
databind = "attr: { 'href = javascript: popup()' }">
<i class="icon icon-random"></i>
</a>
当我点击链接时没有任何反应。
我也尝试过:
<a class="hover-glow" data-placement="bottom" rel="tooltip"
title="change status" onclick ="javascript: popup()">
<i class="icon icon-random"></i>
</a>
和
<a class="hover-glow" data-placement="bottom" rel="tooltip"
title="change status" href ="javascript: popup()">
<i class="icon icon-random"></i>
</a>
结果是一样的。
弹出窗口不得禁用父屏幕。
该网站正在使用colorbox的另一个弹出窗口来禁用该屏幕。
感谢您的回应。
答案 0 :(得分:1)
您的popup()JavaScript函数中可能存在构建查询字符串的问题。你应该做的是将这个任务分为两个步骤:
首先使 Window.Open 工作(不使用查询字符串):
<a class="hover-glow"
data-placement="bottom"
rel="tooltip"
title="change status"
href="javascript: popup()">
<i class="icon icon-random"></i>
</a>
<script type="text/javascript" charset="utf-8">
function popup()
{
//var url = 'update-status_popup.aspx?i='+Id+'&c='+StatusId;
var url = 'update-status_popup.aspx';
window.open(url);
}
</script>
然后,一旦popup()函数正常工作,构建动态查询字符串。有很多方法可以解决这个问题。请参阅此处的答案:How to pass a query string variable?
答案 1 :(得分:1)
我认为弹出功能不起作用。您可能希望查看浏览器控制台窗口并查看错误。
您可以尝试将所有j放入href。
data-bind="attr: { 'href': 'javascript: window.open(\'update-status_popup.aspx?i=' + Id + '&c=' + StatusId + '\')' }"
或者有一个通用的弹出功能,它将url作为参数。
data-bind="attr: { 'href': 'javascript: popup(\'update-status_popup.aspx?i=' + Id + '&c=' + StatusId + '\')' }"
function popup(url) {
window.open(url);
}
我认为Id和StatusId是服务器变量,在客户端不可用。
答案 2 :(得分:1)
要实现“弹出窗口”(不是新的浏览器选项卡),您应该考虑实现 jQuery.UI对话框。以下是显示如何实现它的答案的链接:
How to display an IFRAME inside a jQuery UI dialog
这是jQuery UI Dialog文档的链接:https://jqueryui.com/dialog/