我必须从服务器端显示fancybox。我编写了一个javascript方法,并在asp.net中的ScriptManager.RegisterStartUpScript中调用该方法按钮单击
这是我背后的代码
protected void btnSaveAndAddConcern_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "fancybox", "callFancyBox();", true);
}
这是我的javascript函数
function callFancyBox() {
$("#fancybox").attr("href", "/Agent/AddCampConcernPopup.aspx").fancybox({
'width': 550,
'height': 200,
'type': 'iframe',
'title': ''
}).trigger("click");
}
函数被调用但fancybox无法打开。当我从客户端调用它时,这个javascript函数工作正常。但是,当我从fancybox后面的代码调用它时,从未显示过。我检查控制台中的错误,并在从服务器端调用后显示此错误
“未捕获的TypeError:无法读取未定义的属性'hide'”
我有jquery 1.10.2和fancybox版本1.3.4
同样,当我从客户端调用它时,fancybox工作正常,但问题是服务器端调用。
答案 0 :(得分:2)
如果添加
会更好ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "ajax", "callFancyBox()", true);
取代
ScriptManager.RegisterStartupScript(this, this.GetType(), "fancybox", "callFancyBox();", true);
另外按类添加非ID,以便您可以将一个函数传递给多个,如下所示
$(document).ready(function () { //this line you have to add for initiate script so it will solve your undefined error
$('.fancybox').fancybox({
type: 'iframe'
});
}
答案 1 :(得分:1)
使用ScriptManager.RegisterClientScriptBlock
代替ScriptManager.RegisterStartupScript
。
试试这个
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "fancybox", "callFancyBox();", true);