我正在尝试创建三个按钮。ButtonAdd 添加一个新的介绍屏幕并在新窗口中打开一个编辑器以对所述屏幕进行更改。Button1 仅在用户尚未添加介绍屏幕时可见。ButtonRemove 删除介绍屏幕。ButtonEdit 打开编辑器以更改介绍屏幕。ButtonRemove 和 ButtonEdit 仅在用户已经添加了介绍屏幕时才可见。我遇到的问题是ButtonAdd。
ButtonAdd 需要进行服务器调用才能实际创建对象并将其保存在数据库中:
serverClickFunction(object sender, EventArgs e)
{
activity.addIntroScreen();
}
ButtonAdd 还需要进行客户端调用才能打开编辑器。打开编辑器的 URL 需要知道关于新对象的某些信息(screenid 和 contentid):
function OpenEditIntro() {
var tviewer = window.open('../library/edit.aspx?&ScreenID=<%#
this.introScreenID %>&contentID=<%# this.introContentID%>')
tviewer.focus();
}
所以基本上需要首先进行服务器调用。否则客户端调用不知道 screenID 或 contentID 使用什么。所以我尝试从服务器或后面的代码中调用客户端函数。像这样:
serverClickFunction(object sender, EventArgs e)
{
activity.addIntroScreen();
ScriptManager.RegisterStartupScript(this, this.GetType(),
"openEdit", "OpenEditIntro();", true);
}
这非常有效。除了弹出窗口阻止程序不喜欢这样。所以他们不允许弹出编辑窗口。有没有办法绕过这个弹出窗口被阻止?还是我没有考虑解决这个问题的另一种方法?