2014-01-06 40 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

相关问题