0

有没有办法在网站加载时向代码 php/html 页面提供或添加 js 文件。我有 500 多个页面,我正在寻找一种将一小段代码添加到所有页面的方法。

例如 onload www.xyz.com - 在运行时将 javascript 文件/片段添加到该页面

这个想法是在加载的页面上添加一个javascript片段,这样它就不会是服务器端,它必须是客户端。

下面提供的代码仍然需要我在每一页上添加检查脚本。

我需要知道是否有办法通过 apache 在站点加载时提供文件?

4

4 回答 4

2

假设您有带有<html><head></head><body>whatever</body></html>某种东西的静态页面。以下应该可以快速解决。我的方法修改了底部结束</body>标签,但您可以修改它以更改<head>或开始<body>标签

.htaccess

<IfModule php5_module>
    php_value auto_prepend_file /var/www/vhosts/example.com/httpdocs/auto_prepend.php
    php_value auto_append_file  /var/www/vhosts/example.com/httpdocs/auto_append.php
</IfModule>

auto_prepend.php

<?php 
ob_start();
?>

auto_append.php

<?php 
$output = ob_get_clean();
$script = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/script.inc');
$output = str_replace('</body>', $script.PHP_EOL.'</body>', $output);
echo $output;
?>

脚本公司

<script>
// using jquery method to attach onload:
jQuery(function(){
    // do your js stuff here or load your external js, like with jQuery.getScript() or jQuery.ajax()
    // http://api.jquery.com/jQuery.getScript/
    // http://api.jquery.com/category/ajax/
});

// or if you want go without a framework and attach your onload event. 
// in the most cross browser way see: 
// http://stackoverflow.com/questions/1235985/attach-a-body-onload-event-with-js

</script>
于 2012-10-23T19:27:15.313 回答
0

是的你可以。看看他们是如何动态加载 jquery 的: Loading jQuery on-the-fly

一个典型的用例:jqueryfy http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet

于 2012-10-23T18:02:52.560 回答
0

onload您可以调用一个函数,该函数在 body属性中调用脚本

<body onload="addScript()">
<script type="text/javascript">
function addScript()
{
    document.write("<script src='path\/to\/script.js' type=\"text/javascript\"><\/script>");
}
</script>
于 2012-10-23T18:05:40.800 回答
-1

使用上面的 Anthony Hatzopoulos 解决方案。

ob_start();

在前面和追加中(通过 htaccess 或 php.ini)使用:

<?php
$output = ob_get_clean();
$yourcode = "<yourscript/></body>";
$output = str_replace('</body>', $yourcode, $output);
echo $output;
?>

这对我来说是最好的解决方案。

于 2014-03-22T15:21:01.830 回答