2014-01-06 85 views
0

由於某些原因,我必須從另一個包含頁面設置頁頭部分。 首先看看下面inc.php頁:如何把JavaScript作爲函數參數

page: inc.php 
<?php 
function sethead($javascript){ 
echo '<html><head>'; 
echo '<link rel="stylesheet" type="text/css" href="site.css" />'; 
echo '<script type="text/javascript" src="jquery1.9.1.js"></script>'; 
echo $javascript; 
echo '</head>'; 
} 
?> 

的inc.php頁面包含sethead()函數將每一頁這樣的套頭:

page: main.php 
<?php 
include('inc.php'); 
$javascript = '<script type="text/javascript" language="javascript">.......</script>'; 
sethead($javascript); 
<body> 
Here body codes go here 
..................... 
..................... 
..................... 
</body> 
</html> 
?> 

的main.php網頁可能可以是任何頁面,如secondpage.php,thirdpage.php ....等等。 但是,由於每個頁面的JavaScript可能會有所不同,所以我必須從sethead($ javascript)的函數參數中回顯此javascript。但是在調用函數sethead($ javascript)之前我找不到一個合適的方式在main.php頁面中聲明這個javascript參數,因爲javascript代碼包含難於放入變量的幾行代碼。

<script type="text/javascript" language="javascript"> 
document.oncontextmenu = function() { 
    return false; 
} 
window.onbeforeunload = function() { 
     return "Please don't reload this page."; 
    } 
</script> 

如何以簡單的方式將上述JavaScript代碼行放入變量/函數參數($ javascript)中?

+0

爲什麼它會這樣? PHP就像類固醇上的HTML一樣。我會做一個'header.php',在那裏你有條件地包含你的'script.js',然後在需要的地方'require'header.php''。用JavaScript編寫您的JavaScript ** ** 。 – elclanrs

+0

因爲它最終需要兩個包含在main.php頁面中,第一個是header.php,第二個是script.js到header.php。我想減少每個php頁面的包含數量,因爲我的網站在共享主機中,並且每分鐘的php腳本/ javascript的併發數量有限制。所以,我不想從另一個文件中調用script.js,而是將script.js聲明爲函數參數。 – stockBoi

+0

如果你擔心這一點,那麼我認爲你可以做的最好的事情就是將所有腳本縮小爲一個,並將其加載到body中,而不是頭中,然後在JavaScript中執行任何邏輯。這是常見的做法。 – elclanrs

回答

1

如果你只是想一個更簡單的,爲什麼定義多行變量,使用NOWDOC:

$javascript = <<<'EOD' 
<script type="text/javascript" language="javascript"> 
document.oncontextmenu = function() { 
    return false; 
} 
window.onbeforeunload = function() { 
     return "Please don't reload this page."; 
    } 
</script> 
EOD; 

雖然它可能是更容易編寫在外部的.js文件的JavaScript和文件名傳遞給包括代替。

+0

我之前沒有聽過'nowdoc'的方法。你能否向我解釋一下這種方法,或者你能給我一些鏈接,從中我可以瞭解這種方法嗎? – stockBoi

+0

我收到了關於NOWDOC和HEREDOC的文章。我認爲這是最好的解決方案,因爲它不需要任何符號轉義。感謝Jan Traenkner。 – stockBoi

1

PHP支持多行字符串,這樣你就可以簡單的白色:

$javascript = ' 
    <script type="text/javascript" language="javascript"> 
    document.oncontextmenu = function() { 
     return false; 
    } 
    window.onbeforeunload = function() { 
     return "Please don\'t reload this page."; 
    } 
    </script> 
'; 

不要忘記逃避所有'符號。

但我認爲最好的決定是將js-code保存在js文件中

+0

謝謝,我只是想知道php是否支持多行字符串,以及如何編寫這些多行字符串,您清楚地告訴了這些字符串。我想減少包含的數字,因爲我的網站在共享主機中,並且每分鐘有併發運行腳本的限制。 – stockBoi

相關問題