在 HTML 中请求时使用 PHP 生成 JavaScript 文件

Posted

技术标签:

【中文标题】在 HTML 中请求时使用 PHP 生成 JavaScript 文件【英文标题】:Generate JavaScript file with PHP when requested in HTML 【发布时间】:2015-01-07 09:57:33 【问题描述】:

当在 html 程序中请求时,如何使用 php 生成 javascript 文件?我想要一个这样的 PHP 程序,它在请求某个 JavaScript 文件时在服务器上运行。示例代码:

<?php
    If (requested("file:///C:/server/htdocs/javascriptgenerator.php") 
        javascript-code-to-give-to-client = "function myFunction()...";
    
?>

我知道那是非常假的代码,但当我不知道该怎么做时,我就是这样写的。我还希望该文件始终在服务器上运行,以防请求该文件。我也想知道如何正常发送文件。我也想知道如何根据客户来执行此操作。

【问题讨论】:

只是出于好奇,你为什么要这么做? 我不知道您为什么要这样做,没有足够的上下文,但请查看file_put_contents() 好吧,我想根据客户的情况来做。 【参考方案1】:

最简单的方法是不实际使用 javascriptfile.js。取而代之的是一个名为 javascriptgenerator.php 的新 php 文件或包含以下代码的文件:

<?php

header('Content-Type: text/javascript');

if($condition)
    echo file_get_contents('js/javascript_file_a.js');

header() 行确保浏览器会识别它是一个 JS 文件。

在 HTML 文件中使用这个很简单,只需在 &lt;head&gt; 标签中使用这行代码

<script type="text/javascript" src="javascriptgenerator.php"></script>

如果您需要了解有关客户端的信息,您可以检查用户代理,然后您可以将其传递给 get_browser() 函数,如下所示:

$user_agent = $_SERVER['HTTP_USER_AGENT'];
$browser_info = get_browser($user_agent);

获取浏览器输出的示例(来自PHP Manual):

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)

【讨论】:

我应该如何获取 HTML 中的脚本?根据客户的不同,我该怎么做?

以上是关于在 HTML 中请求时使用 PHP 生成 JavaScript 文件的主要内容,如果未能解决你的问题,请参考以下文章

将每次迭代生成的数据框保存在列表中

Java 数据生成html?

PHP在登录/退出时重新生成会话ID不起作用

PHP生成静态网页的方法

使用PHP将长文章分页

PHP使用gRPC请求GO服务实战