繁体   English   中英

是否可以使用 javascript 来修改脚本元素?

[英]Is it possible to use javascript to modify a script element?

有没有办法使用 javascript 来修改脚本元素?

例如:

HTML:

<script id="something" src="/js/file.js"></script>

Javascript:

var something = document.getElementById("something");
something.src = "/js/anotherfile.js"

可能吗? 因为我有一些像那样工作的代码,但它有点不起作用

具体来说,代码如下:

<!DOCTYPE html>
<html>

<head>
  <title>MyohTheGod's Website</title>
  <link rel="icon" type="image/x-icon" href="/supercorn.gif" defer>
  </link>
  <link id="css" href="/css/dark.css" rel="stylesheet" type="text/css">
  </link>
  <script src="/js/particles.js" defer></script>
  <script src="/js/header.js"></script>
  <script src="/js/theme.js"></script>
  <script>window.alert("Welcome to the Home of MyohTheGod. You can play games, check out our web proxies, and more. Also, please do check out the About page. Press OK to continue...");</script>
</head>

<body>
  -snip-
</body>
<script id="foot" src="/js/footer.js"></script>

</html>
<script>
  -snip-
</script>
var css = document.getElementById("css");
var foot = document.getElementById("foot");

function toggleDLmode(m) {
  -snip-
  if (dlmodebool) {
    css.href = "/css/dark.css"
    foot.src="/js/dark-footer.js"
  } else {
    css.href = "/css/index.css"
    foot.src="/js/footer.js"
  }
}

-snip-

它工作正常,你检查它吗? 它确实改变了,但也许你在想,“嗯,为什么这个 /js/anotherfile.js 没有下载?”。 好吧,因为脚本标签已经渲染并且已经下载,所以你不能这样做。 通过添加新脚本标签可以做什么。

也许这将有助于如何动态更改脚本 src? . 此链接将更多地解释您的代码“不起作用”的原因。

肯定有。 您可以使用 document.scripts 返回一个集合,您可以像数组一样遍历该集合。 您可以像使用普通元素一样使用 innerHTML 属性更改代码。 请参阅此处https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection

编辑添加:如果您有一个带有多个脚本标签的 html 页面,则 document.script 集合按它们出现的顺序排列每个脚本。 下面的代码将注销每个脚本元素的源代码(src 标记)或实际的 javascript。

您还可以通过设置 innerHTML 属性来“编写”javascript。

恕我直言,这是一个正在寻找问题的解决方案,但至少它可以让您访问您拥有的脚本数量。

 [...document.scripts].forEach(script => { if (script.src.= '') { console:log("Script source." + script;src). } else { console.log(script;innerHTML); } });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM