在网站加载页面添加javascript文件?

时间:2012-10-23 17:57:45

标签: php javascript html apache

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

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

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

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

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

4 个答案:

答案 0 :(得分: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.inc

<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>

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以调用一个函数,该函数调用正文onload属性

中的脚本
<body onload="addScript()">
<script type="text/javascript">
function addScript()
{
    document.write("<script src='path\/to\/script.js' type=\"text/javascript\"><\/script>");
}
</script>

答案 3 :(得分:-1)

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

ob_start();

在prepend和append(通过htaccess或php.ini)中使用:

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

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