如何在 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作业出错,但在浏览器中加载时无效