Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除已生成的脚本标记并重新生成?_Javascript_Jquery_Twitter_Facebook Like - Fatal编程技术网

Javascript 如何删除已生成的脚本标记并重新生成?

Javascript 如何删除已生成的脚本标记并重新生成?,javascript,jquery,twitter,facebook-like,Javascript,Jquery,Twitter,Facebook Like,我面临一个关键问题。我有一页有两部分。在页面的第一部分,通过ajax请求呈现html。在第二个页面上,html在页面加载时呈现。页面的第一部分使用不同的分页脚本分别处理。分页也通过向同一url发送ajax请求来处理 我对第一部分有问题。为第一部分生成html的脚本还使用javascript生成了大量javascript标记和html。现在,我在该html中插入新脚本标记时的操作如下: var script = document.createElement("script"); script.

我面临一个关键问题。我有一页有两部分。在页面的第一部分,通过ajax请求呈现html。在第二个页面上,html在页面加载时呈现。页面的第一部分使用不同的分页脚本分别处理。分页也通过向同一url发送ajax请求来处理

我对第一部分有问题。为第一部分生成html的脚本还使用javascript生成了大量javascript标记和html。现在,我在该html中插入新脚本标记时的操作如下:

var script   = document.createElement("script");
script.type  = "text/javascript";
script.text  = "window.twttr = (function (d,s,id) {var t, js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;js.src=\"//platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs);return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });}(document, \"script\", \"twitter-wjs\"));(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_GB/all.js#xfbml=1\"; fjs.parentNode.insertBefore(js, fjs);}(document, \"script\", \"facebook-jssdk\"));var script_generated=1";               // use this for inline script
document.body.appendChild(script);
if(typeof script_generated === "undefined") {
  var script   = document.createElement("script");
  script.type  = "text/javascript";
  script.text  = "window.twttr = (function (d,s,id) {var t, js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;js.src=\"//platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs);return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });}(document, \"script\", \"twitter-wjs\"));(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_GB/all.js#xfbml=1\"; fjs.parentNode.insertBefore(js, fjs);}(document, \"script\", \"facebook-jssdk\"));var script_generated=1";
           // use this for inline script
  document.body.appendChild(script);
} 
事实上,Twitter和FacebookConnect语句在页面第一部分的每个项目上显示一个类似Facebook的按钮和一个Twitter按钮。当页面第一次加载时,脚本标记将成功生成。但是,当我点击分页时,它会发送一个新的ajax请求,为新页面生成html,它还会再次生成相同的脚本标记。因此,在第二页上,我的Twitter按钮和类似Facebook的按钮没有显示出来

我认为这是由于Facebook和Twitter的双重连接声明。然后我生成一个变量,并在生成脚本标记时设置一些值。在每个请求中,我检查变量是否存在。如果它存在,我不会像这样生成特定的脚本标记:

var script   = document.createElement("script");
script.type  = "text/javascript";
script.text  = "window.twttr = (function (d,s,id) {var t, js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;js.src=\"//platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs);return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });}(document, \"script\", \"twitter-wjs\"));(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_GB/all.js#xfbml=1\"; fjs.parentNode.insertBefore(js, fjs);}(document, \"script\", \"facebook-jssdk\"));var script_generated=1";               // use this for inline script
document.body.appendChild(script);
if(typeof script_generated === "undefined") {
  var script   = document.createElement("script");
  script.type  = "text/javascript";
  script.text  = "window.twttr = (function (d,s,id) {var t, js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;js.src=\"//platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs);return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });}(document, \"script\", \"twitter-wjs\"));(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_GB/all.js#xfbml=1\"; fjs.parentNode.insertBefore(js, fjs);}(document, \"script\", \"facebook-jssdk\"));var script_generated=1";
           // use this for inline script
  document.body.appendChild(script);
} 
执行此脚本标记不会重新生成,但tweet和类似Facebook的按钮仍然不会显示

现在我所解释的(可能是错误的)是,由于脚本标记是由ajax请求生成的,所以按钮没有正确显示,因为它们找不到脚本标记

现在我想要的是,每当向该文件发送请求时,它首先检查特定的脚本标记是否存在,如果存在,则删除它并生成一个新的,否则生成。请指导我怎么做


如果我错误地解释了问题,请告诉我确切的问题是什么,以及如何克服此问题。

您好,您可以获取该脚本标记的引用对象,并且可以使用对象更改引用的src文件

应该是这样,

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);
var$jsRef=$('').appendTo(document.body);
$jsRef.attr(“src”、“jsFileName.js”);
//您还可以添加如下内容
$jsRef.append(内容);
//您可以用同样的方法更改js文件名或内容
$jsRef.attr(“src”、“newJSFileName.js”);
//像这样更改内容
$jsRef.empty();
$jsRef.append(内容);

或者,您可以为脚本标记设置id,并根据id更改内容,而不是使用对象进行访问。

您好,您可以获取该脚本标记的引用对象,也可以使用对象更改引用的src文件

应该是这样,

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);
var$jsRef=$('').appendTo(document.body);
$jsRef.attr(“src”、“jsFileName.js”);
//您还可以添加如下内容
$jsRef.append(内容);
//您可以用同样的方法更改js文件名或内容
$jsRef.attr(“src”、“newJSFileName.js”);
//像这样更改内容
$jsRef.empty();
$jsRef.append(内容);

或者,您可以为脚本标记设置id,并根据id更改内容,而不是使用对象进行访问。

在动态添加时,您可以为脚本标记指定id

var script   = document.createElement("script");
script.setAttribute('id', 'addedScript');
script.type  = "text/javascript";
script.text  = "window.twttr = (function (d,s,id) {var t, js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;js.src=\"//platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs);return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });}(document, \"script\", \"twitter-wjs\"));(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_GB/all.js#xfbml=1\"; fjs.parentNode.insertBefore(js, fjs);}(document, \"script\", \"facebook-jssdk\"));var script_generated=1";
// use this for inline script
document.body.appendChild(script);
之后,您可以使用此函数检查脚本标记是否存在,并使用.remove()查询函数删除

if(addedScript != undefined) {
  $("#addedScript").remove();
} 

在动态添加时,您可以为脚本标记提供id

var script   = document.createElement("script");
script.setAttribute('id', 'addedScript');
script.type  = "text/javascript";
script.text  = "window.twttr = (function (d,s,id) {var t, js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;js.src=\"//platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs);return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });}(document, \"script\", \"twitter-wjs\"));(function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;js = d.createElement(s); js.id = id; js.src = \"//connect.facebook.net/en_GB/all.js#xfbml=1\"; fjs.parentNode.insertBefore(js, fjs);}(document, \"script\", \"facebook-jssdk\"));var script_generated=1";
// use this for inline script
document.body.appendChild(script);
之后,您可以使用此函数检查脚本标记是否存在,并使用.remove()查询函数删除

if(addedScript != undefined) {
  $("#addedScript").remove();
}