2

我想删除一个脚本元素并将其替换为不同的元素。可以说你

<html>
<head>
<script src="default.js">
</head>

我想要做的是删除 default.js 并单击按钮将其替换为 new.js 。我知道您可以创建这样的脚本:

var new_scr=document.createElement('script'); 
new_scr.src="new.js"; 
document.getElementsByTagName('head')[0].appendChild(new_scr);
4

3 回答 3

3

只是偶然发现了这一点,并认为我会为所有不再使用 JQuery 的人记下一个香草解决方案。

  const newScript = document.createElement('script')
  const oldScript = document.querySelector('script[src*="default"]')
  newScript.src = 'new.js'
  oldScript.parentNode.insertBefore(newScript, oldScript.nextSibling)
  oldScript.parentNode.removeChild(oldScript)

就像其他答案概述了替换脚本的唯一方法是找到它,在它之后放置一个新的,然后删除原来的。

享受 :)

于 2020-01-14T12:10:17.913 回答
1

您可以为脚本标签设置 id 并根据 id 更改内容,而不是用新的替换它。

或以下可能对您有用的代码块。

var $jsRef = $('<script type="text/javascript" >').appendTo(document.body);
$jsRef.attr("src","jsFileName.js");

// You can also add content like this
$jsRef.append(content);


// You can change the js file name or content the same way
$jsRef.attr("src","newJSFileName.js");

// Changing the content like this
$jsRef.empty();
$jsRef.append(content);
于 2013-02-03T21:49:04.313 回答
0

我不认为你可以“替换”它。在您的 javascript 有机会替换它之前,代码将在页面加载时被解析。因此,即使您加载其他内容,该 javascript 也将已经在运行,即在内存中。我可能有点离谱,但我不认为你可以“替换”一个脚本,除非你真的覆盖了它建立的项目。

于 2013-02-03T21:25:09.050 回答