如何替换脚本元素?

时间:2013-02-03 21:23:14

标签: javascript

我想删除一个脚本元素并将其替换为另一个脚本元素。 让我们说你

<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);

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

偶然发现这一点,以为我为所有不再使用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)

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

享受:)

答案 2 :(得分:0)

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