是否可以使用单个javascript标记来加载外部js文件并调用其函数

Is it possible to use a single javascript tag for loading an external js file and calling its function?

本文关键字:文件 js 外部 调用 函数 加载 可以使 单个 javascript 是否      更新时间:2023-09-26

我正在编写一个第三方javascript(my.js),它可以使用script标记插入HTML页面。我想实现以下目标:

  • my.js被加载(它有一个函数myFunc(params))
  • 使用适当的params调用myFunc()(参数可以更改)
  • 将my.js脚本放在头上不是一个选项

我能使用的最佳方法是什么?

问题是,你不能真正通过一个指向外部文件的脚本标记来传递参数,所以你必须从DOM中的某个元素获取它们:

html:

<html>
<body>
  <script src="my.js"></script>
  <input id="params" type="hidden" value="'param1', 'param2', 'param3'" />
  <div id="result"></div>
</body>
</html>

javascript:

function myfunc() {
var doc = document,
 params = doc.getElementById("params").value.split(","); // make an array of params
doc.getElementById("result").innerHTML = params.toString();
}
window.onload = myfunc;

不过,老实说,这是一个拼凑。正如Felix之前提到的,您可能只需要使用两个脚本标记——一个用于获取外部js文件,另一个用于使用所需参数调用函数。

您可以通过查询字符串传入参数并动态解析它们。

例如,您的脚本标记变为:<script src="my.js?foo=bar"></script>

然后,您可以使用获取URL的值

var scripts = document.getElementsByTagName('script');
var url = scripts[ scripts.length - 1 ].getAttribute('src');

由于浏览器加载JS的顺序,页面上的最后一个脚本(当您的脚本在加载过程中执行时)应该始终是您的脚本。

然后解析查询字符串。关于Stack Overflow,有很多问题需要解决。例如:分析JavaScript 中的查询字符串