2012-10-14 55 views
2

我正在使用經典ASP文件(language = JavaScript)來顯示一些HTML信息。我想要做的是檢查頁面是否在框架中,如果沒有,則重定向到另一頁面。有沒有辦法檢查頁面是否在Classic ASP中有父項?我試過使用window,但它不被識別。代碼應該是這樣的:經典ASP javascript檢查父項

<%@ language = "JavaScript"%> 
<!DOCTYPE html> 

<html> 

    <head> 
     <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
     <title>Secure Area</title> 

     <link href="css/basic.css" rel="stylesheet" type="text/css" media="all" /> 

     <% 
      if (!window.parent) 
       window.location.replace("index.html"); 
     %> 

     <link href="Images/FavIcon.ico" rel="shortcut icon" type="image/x-icon" /> 
    </head> 
</html> 

回答

2

不是真的。

瀏覽器在請求資源時不會向服務器發送有關幀結構的信息。

您可以檢查HTTP Referer頭(它是可選的,因此可能未定義),將HTTP請求(使用您的服務器端代碼)回送到該URI,然後解析它以查看它是否包含任何框架,並且如果它們中的任何一個默認爲src="your uri",或者如果有任何鏈接指向一個幀有href="your uri" ...但這將是非常低效且不可靠的。

這樣的事情是更好地與客戶端JS處理。

+0

是的,這麼想。客戶端JS可以關閉。 – Nick

1

不能檢查,如果一個窗口是在服務器端的框架 - 沒有什麼,讓你這個信息的請求。

你需要做這個客戶端 - 你可以讓你的客戶端腳本將值傳遞給服務器(URL上的參數,隱藏字段,cookie,無論什麼......)。

1

在javascript中,你可以檢查,如果一個頁面與此的iframe:

if (window.top === window.self) { 
    // not in a frame 
} else { 
    // in a frame 
} 

有沒有辦法在ASP來做到這一點。沒有服務器端語言會意識到它是否被渲染在一個框架中 - 這不是商業知識。