2016-03-31 187 views
4

我有一个EventDetails.aspx页面,其中包含可由我的用户使用我的Timetable.aspx页面中的Window.Open()打开的事件的详细信息。在EventDetails.aspx页面我有一个按钮,可以让我再使用如下代码关闭窗口:如何判断我的页面是否使用Window.Open()打开

protected void CloseWindow_Click(object sender, EventArgs eventArgs) 
{ 
    Response.Write("<script language='javascript'>window.open('','_self');window.close();</script>"); 
} 

当我打开我的窗口,从Timetable.aspx页面关闭窗口Window.Open()按钮工作正常,但是如果我独立导航到EventDetails.aspx页面,我无法使用关闭窗口按钮 - 没有任何反应!

有没有一种方法可以确定用户是否使用Window.Open()进行了导航,以便可以更改我的按钮的可见性,或者更好,还有另一种方法可以关闭不依赖于我的选项卡使用Window.Open()?

+0

当您使用'window.open'打开时,您可以在查询字符串中传递一个参数。如果您在加载EventDetails页面时发现它,就知道它已经以这种方式打开。 – ConnorsFan

+3

检查'window.opener'的值,它将包含对打开弹出窗口的窗口的引用 – dman2306

+1

@ConnorsFan我可能会尝试,但我想象我会有类似的问题,即。如果用户在使用Window.Open()打开页面之后对url进行书签标记,然后再尝试返回包含查询字符串的url。 – Claire

回答

2

你可以通过数据来打开的窗口,这样在打开的窗口,你可以检查在JS的数据,你可以根据传递

// Store the return of the `open` command in a variable 
var newWindow = window.open('example.com','_self'); 

// Access it using its variable 
newWindow.my_special_setting = "Hello World"; 

在打开的窗口中,您可以检查数据的数据隐藏或显示按钮像下面

window.my_special_setting 

添加一个jQuery小提琴码,以确认其将与 '_self'

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p>Click the button to open a new browser window.</p> 
 

 
<button onclick="myFunction()">Try it</button> 
 

 
<script> 
 

 
window.open("http://www.w3schools.com","_self"); 
 

 
</script> 
 

 
</body> 
 
</html>
工作

+0

@WashingtonGuedes我们可以将它作为第二个参数添加到windows.open更新代码 –

+0

@WashingtonGuedes让我确认它 –

+1

@WashingtonGuedes我认为它应该工作在与_self一起使用的答案中添加了小提琴 –

相关问题