如何在 html 标头中加载可选择的 javascript

Posted

技术标签:

【中文标题】如何在 html 标头中加载可选择的 javascript【英文标题】:How do I load a selectable javascript in html header 【发布时间】:2019-05-26 15:44:14 【问题描述】:

我正在寻找一种从 html 文件参数中选择和加载 javascript 的方法。 html文件调用如下:

OSM_Map.html?year=2017 或 OSM_Map.html?year=2018

在OSM_Map.html文件的头部有如下代码:

<head>
.....
<script language="JavaScript" type="text/javascript" src="LatLonDB_2017.js"></script>
<script language="JavaScript" type="text/javascript" src="LatLonDB_2018.js"></script>
....
</head>

从参数列表中获取年份参数没有问题,但是如何根据年份参数仅加载这些 .js 文件之一?

【问题讨论】:

如果您不能在服务器端执行此操作(例如使用 php),您可以在页面加载时从 URL 读取年份参数值 (***.com/a/5448595/586678) 并使用正确的 src 值动态地将脚本标签附加到 DOM ( ***.com/a/31585920/586678)。我相信您会设法从中获得有效的解决方案并回答您自己的问题;) 【参考方案1】:

正如有人说,“是的,你可以”:

<html>
  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/loadjs/3.5.5/loadjs.min.js"></script>
   <script>
      var myparameter = new URL(location.href).searchParams.get("year");
      loadjs( "LatLonDB_" + myparameter +".js" );
    </script>

</head>
<body>
    <h1>Titulo</h1>
</body>
</html>

网址类似于:http://test.html?year=2018

但是!不确定这是否适用于每个浏览器......“searchParams”不是普遍兼容的。

感谢@spencer.sm 在这个问题How to get the value from the GET parameters?

当然还有 loadJS 函数。

【讨论】:

【参考方案2】:

LatLonDB_xxxx.js 脚本仍未加载。我不知道为什么不。您不能从 .html 文件所在的其他目录加载 .js 文件吗?否则加载可能为时已晚。 LatLonDB_xxxx.js 脚本之后的脚本使用此数据库。

原来的代码是这样的:

<html>
<head>
  ...
  <script language="JavaScript" type="text/javascript" src="../DataBases/LatLonDB_20xx.js"></script>
  <script language="JavaScript" type="text/javascript" src="../DataBases/LatLonDB_utils.js"></script>
  <script language="JavaScript" type="text/javascript" ...more scripts using the LatLonDB_20xx.js></script>
  ...
</head>
...
</html>

意图是将20xx替换为正确的年份:2000、2001等。从查询参数中获取正确的年份是没有问题的。

【讨论】:

以上是关于如何在 html 标头中加载可选择的 javascript的主要内容,如果未能解决你的问题,请参考以下文章

无法添加Cookie,已发送标头。 cron作业出错,但在浏览器中加载时无效

301重定向后如何防止chrome从磁盘缓存中加载index.html

设置可重用标头时出错:'无法在包中加载 NIB

主函数WinMain

在 XDocument 中加载时,XML 标头被删除

在 clickhouse 中加载数据时跳过 csv 标头