我一直在构建我的网页,包括pageStart.html
和pageEnd.html
个文件,然后在两个包含之间开展业务。
pageStart.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet/less" type="text/css" href="css/style.less"/>
<script src="js/less.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
pageEnd.html
</body>
</html>
这意味着我不必记住整个内容,只是为了包含它们。
我现在的问题是我希望某些页面加载某些JS脚本,但我已经关闭head
,因此无法(正确)声明新脚本。这样做会有什么更好的方法?这甚至是个好主意吗?我应该只是手动将文件的内容放在我的PHP文件中,然后添加任何额外需要的脚本吗?
答案 0 :(得分:2)
首先,一个好的网络标准是在页脚中包含js
个文件。这是因为页面的html/css
将完成并更快地显示页面,以便用户获得有关页面呈现的一些反馈。
如果您知道<script>
仅在该页面上使用,我认为在页面末尾添加新的js
标记没有任何问题。将其包含在2页或更多页面上可能需要保证脚本包含在页脚中。
您也可以延迟加载js
:RequireJS lazyloading
答案 1 :(得分:1)
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet/less" type="text/css" href="css/style.less"/>
<script src="js/less.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
{zScriptPlaceHolder}
</head>
<body>
然后,回显内容(如果这是你的工作方式)或将它们添加到存储页面的常规变量中,同时用chossen脚本替换占位符:
echo str_replace('{zScriptPlaceHolder}',$scripts,file_get_contents("pageStart.html"));
$html.= str_replace('{zScriptPlaceHolder}',$scripts,file_get_contents("pageStart.html"));
你的脚本会在你的标题中
答案 2 :(得分:1)
有时候我使用了这样的结构:
class Layout
{
public function Header($js = "")
{
?><!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet/less" type="text/css" href="css/style.less"/>
<script src="js/less.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
if (strlen($js) > 0)
{
?>
<script><?php echo $js; ?></script>
<?php
}
?>
</head>
<body>
}
function __destruct()
{
?>
</body>
</html><?php
}
}
$layout = new Layout();
然后你就这样使用:
include "classes/layout.php";
$js = "alert('My inline JavaScript code');";
$layout->Header($js);
结束标记</body></html>
将在脚本末尾自动添加。但您可以执行与Header()
类似的操作,例如Footer()
。你们都可以创建像addScript("js/some-jquery-plugin.js")
这样的方法,将该值添加到数组中,并以Header()
方法打印。
这种结构打开了很多可能性。
答案 3 :(得分:1)
如果您想在pageStart.html
中保留脚本,请将其更改为pageStart.php
并执行此操作:
<强> pageStart.php 强>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet/less" type="text/css" href="css/style.less"/>
<script src="js/less.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<?php
if(isset($add_js) && is_array($add_js) && count($add_js) > 0){
foreach($add_js as $k=>$v){
echo '<script src="'.$v.'"></script>';
}
}
?>
</head>
<body>
<强> someOtherPage.php 强>
$add_js = array();
$add_js = 'pathTocustomscript1.js';
$add_js = 'pathTocustomscript2.js';
$add_js = 'pathTocustomscript3.js';
include('pageStart.php');
// go about your body business here
</body>
<强> pageEnd.php 强>
<?php
if(isset($add_js) && is_array($add_js) && count($add_js) > 0){
foreach($add_js as $k=>$v){
echo '<script src="'.$v.'"></script>';
}
}
?>
</body>
</html>
<强> someOtherPage.php 强>
include('pageStart.php');
// go about your body business here
$add_js = array();
$add_js = 'pathTocustomscript1.js';
$add_js = 'pathTocustomscript2.js';
$add_js = 'pathTocustomscript3.js';
include('pageEnd.php');
答案 4 :(得分:0)
就个人而言,我使用一个html文件来包含,因此,根据您的示例:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet/less" type="text/css" href="css/style.less"/>
<script src="js/less.js" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>(%otherscripts%)
</head>
<body>(%documentbody%)
</body>
</html>
我实际上不包含该文件,但是在PHP中使用file_get_contents()读取它,然后使用简单的str_replace将我的内容放入其中。在那之后,我只需要回应它。这种方式也可以添加新脚本,例如:
$page = file_get_contents('page.html);
$page = str_replace('(%documentbody%)', $mycontent, $page);
$page = str_replace('(%otherscripts%)', $myscripts, $page);
任何人都有更好的想法快速更换内容?
最佳, zimpee
答案 5 :(得分:0)
从pagestart中删除结束标记并将其添加到您正在处理的页面中。当您需要一个脚本时,请在结束头标记之前包含它。最好在头标记之间包含脚本。