簡體   English   中英

在PHP'if'中使用javascript更改頁面標題

[英]Change page title using javascript inside a PHP 'if'

這是一種情況:我試圖在單擊菜單鏈接時更改頁面的標題和內容,而無需重新加載整個文檔。 到目前為止,更改內容就像是一種魅力。 但是我在更改標題時遇到了一些問題。

這是代碼,因此我在解釋時可以理解:

if (isset($_GET['rq'])) {
    $rq = $_GET['rq'];
    foreach($lesMenus as $menuName=>$menuContent){
        foreach($menuContent as $name=>$link){
            $linkW = substr($link, 0, strpos($link, '.'));
            if($linkW == $rq){
                $newTitle = $name;
                break;
            }
        }
    }
    if (isset($newTitle)){
        $title = $newTitle;
        echo("<script type=\"text/javascript\">
             document.title =".$newTitle.";
             </script>");
    }
    $mainContent='You have asked for :'.$rq;
    echo $mainContent;
}
else{
    include('INC/layout.html.inc.php');
}

發生的情況是:單擊菜單鏈接后,將調用一個函數,並在完成一些工作后執行此操作: xmlhttp.open("GET", "index.php?rq=" + rq , true);

您在這里擁有的基本上是該index.php頁面的基礎。

foreach循環$lesMenusrq的對應對象的$lesMenus數組。

現在的問題是if (isset($newTitle))內部的腳本無法播放。 其他所有操作(我已經嘗試過echo $newTitle;並且這樣做了,頁面的內容根據所要求的內容而改變,但是腳本無法播放。即使該腳本中的簡單Hello世界也不會發生。

我已經在stackOverflow和Web上搜索了一種在PHP中播放javaScript的方法,這似乎對其他人有用,但是在我看來,它卻沒有。

有指針嗎? :)

謝謝你讀我

克里斯(IT學生)

有不同的方式來更改頁面標題。 只需將數據傳遞給javacsript變量即可更改它,如下所示:

<script>
var jTitle=<?= $phpContainnewTitle; ?>
</script>

並使用javascript如下更改:

  document.title = jTitle;

它會導致SEO排名降低。 標題是SEO中的重要標簽。 注意這一點。

只需將腳本添加到DOM就不會使其執行。 因此,您需要以某種方式調用它,可能是通過將其包裝在函數中並按名稱進行調用。

但是,如果要執行此操作,則最好只回顯newTitle並在執行http請求后對其進行更新:

JS:

<!-- Assuming you have something like this -->
<script>
    var xhttp = new XMLHttpRequest();

    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
           var responseText = xhttp.responseText;
           document.title = responseText;
        }
    };

    xhttp.open("GET", "index.php?rq=" + rq , true);
    xhttp.send();

</script>

PHP:

if (isset($newTitle)){
    echo($newTitle);
}

您可以在PHP中進行條件檢查,並將標題存儲在$newTitle ,還可以創建另一個布爾$needToChangeTitle

而不是使用PHP來回顯腳本標簽。 只需將script標記作為HTML放入,然后進行其他條件檢查。

var needToChangeTitle = "<?php echo $needToChangeTitle ?>";
var newTitle = "<?php echo $newTitle ?>";
if (needToChangeTitle === "true") {
  document.title = newTitle;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM