我可以在网页上嵌套JavaScript脚本吗

Can I nest JavaScript scripts on a webpage?

本文关键字:JavaScript 脚本 嵌套 网页 我可以      更新时间:2023-09-26

在JSP文件中,我有以下行:

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false"></script>

如果JS变量(XY.isChina)为false,有没有办法只执行该行?

也许,我可以用嵌套做这样的事情吗?

<script>
  if (XY.isChina === false) {
    <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false"></script>
  }
</script>

我想也许我可以做这样的事情:

<script>
    type="text/javascript"
    src="//maps.googleapis.com/maps/api/js?sensor=false"
</script>

但这似乎不起作用。因为那时我本可以去:

<script>
  if (XY.isChina === false) {
    type="text/javascript"
    src="//maps.googleapis.com/maps/api/js?sensor=false"
  }
</script>

有人知道正确的方法吗?

有几种选择。您可以将脚本document.write()到HTML中,也可以动态加载脚本。这里有一个例子:

<script>
  if (XY.isChina === false) {
      document.write('<scr' + 'ipt type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false"></scr' + 'ipt>');
  }
</script>

您可以在任何时候动态加载脚本,如下所示:

function loadScript(url, callback) {
    var script = document.createElement("script");
    if (callback) {
        script.onload = callback;
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

像这样动态加载会导致脚本异步加载(页面加载和其他脚本不会等待此脚本加载),因此它将在未来某个不确定的时间完成。

你可以在你的代码中这样使用:

<script>
  if (XY.isChina === false) {
      loadScript("//maps.googleapis.com/maps/api/js?sensor=false");
  }
</script>

使用document.write()可以防止现代浏览器中的某些页面加载优化,因此如果可能的话,通常最好找到不同的方法,但如果您想要阻止,使用document.write()同步加载脚本是有条件加载脚本的最简单方法。