2012-03-02 35 views
4

如果在父瀏覽器窗口中查看當前頁面,我需要顯示鏈接,或者如果在iframe內查看窗口,則顯示另一個鏈接。 我怎樣才能通過PHP?喜歡的東西:如何通過php檢查當前窗口是否爲「頂」(或「父」)?

if (self == top) 
     echo '<span><a href="./" >Link1</a></span>'; 
else 
     echo '<span><a href="./index.php">Link2</a></span>'; 

編輯:既然它不能用PHP來完成,我還在尋找類似的解決方案,也許JS,可有人請告訴我怎麼樣?

最後編輯: 答案:

echo ' 
<script type="text/javascript"> 
    if(window === top) { 
document.write("<span><a href=\"./\">go-to-frame</a></span>"); 
    } 
    else { 
document.write("<span><a href=\"./index.php\">go-to-top</a></span>"); 
    } 
</script> 
'; 

謝謝大家。

+0

這可能是一個更容易通過基於不管你是在一個iframe使用它的查詢字符串,但如果這是不可能的,你需要使用JavaScript來重寫你的鏈接。 – cmbuckley 2012-03-02 00:44:28

+0

好吧,玩這兩個答案我想出瞭如何做到這一點。因爲我不能將2個答案標記爲正確的,我不會標記任何答案。那好吧?或者我應該做點什麼呢?無論如何,我用正確的答案編輯了第一個主題。 – 2012-03-02 01:36:35

+0

[如何識別網頁是在iframe內部加載還是直接加載到瀏覽器窗口?](http://stackoverflow.com/questions/326069/how-to-identify-if-a-webpage- is-being-loaded-inside-an-iframe-or-directly-into -t) – 2016-12-24 16:14:53

回答

-1

答案是

echo ' 
<script type="text/javascript"> 
    if(window === top) { 
document.write("<span><a href=\"./\">go-to-frame</a></span>"); 
    } 
    else { 
document.write("<span><a href=\"./index.php\">go-to-top</a></span>"); 
    } 
</script> 
'; 
16

不能用PHP做這個;這是一種服務器端語言,而不是客戶端語言。因爲它取決於客戶端如何處理窗口,所以服務器不知道任何事情。您可以通過AJAX請求發回一些內容,然後重新加載頁面,但這是一個混亂,可怕的解決方案。

要檢測,如果你在頂層窗口的時候,你需要做的:

if(window.top == window.self) { 
    // Top level window 
} else { 
    // Not top level. An iframe, popup or something 
} 

你是非常接近你在你的問題給的例子。 window.top是堆棧的最頂層窗口,window.self是當前JS和DOM所在的窗口。

+0

好吧,可以用JS完成嗎?你能告訴我怎麼樣? – 2012-03-02 00:41:46

+0

請參閱我的編輯。 – Bojangles 2012-03-02 00:44:58

+0

好的,但我有限的知識,我如何插入這個JS在我的PHP腳本? – 2012-03-02 00:46:47

0

沒有辦法從PHP內部檢測到有關環境的信息。

但是,您可以從Javascript(通常)中檢測到它。

例子:

(在你的HTML某處)

<span><a id="MyDynamicLink" href="./">Link1</a></span> 

(在你的腳本在<body>結束:

<script type="text/javascript"> 
    if(window === top) { 
     function() { 
      //this grabs the element from the document tree 
      var link = document.getElementById('MyDynamicLink'); 

      //this sets the 'href' to './index.php'. 
      link.setAttribute('href', './index.php'); 

      //this sets the text inside the link to be 'Link2' 
      link.innerHTML = 'Link2'; 
      //or whatever else you really wanted to do in this situation 
     }(); 
    } 
</script> 

JavaScript的當然是微不足道得到解決但如果您的目標是幫助而不是阻礙您的用戶,那應該不是問題。

+0

看起來像一個很好的解決方案,但我無法確定你在那裏做什麼..無法做到這一點。鏈接1和鏈接2是文本錨點而不是真實鏈接(網址)。 – 2012-03-02 00:59:31

+0

它無法正常工作,它將我引導到相同的目的地**。/ **無論何時在一個框架中查看頁面,文本鏈接都是相同的** Link1 ** – 2012-03-02 01:14:58

相關問題