Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Function_Append - Fatal编程技术网

Javascript 检查函数是否已启动

Javascript 检查函数是否已启动,javascript,function,append,Javascript,Function,Append,是否知道如何检查是否已将此脚本添加到页面上 function init(){ var script = document.createElement("script"); script.type = "text/javascript"; script.text = 'setTimeout(function(){ alert("test msg") }, 10000);'; document.body.appendChild(script); } 注意: 我希望您运行一个函数,直到它

是否知道如何检查是否已将此脚本添加到页面上

function init(){

var script   = document.createElement("script");
script.type  = "text/javascript";
script.text  = 'setTimeout(function(){ alert("test msg") }, 10000);';
document.body.appendChild(script);

}
注意:
我希望您运行一个函数,直到它不再运行

我对标题“如果调用了函数,您要求解决方案”感到困惑,在您的消息中,您要求解决方案来检查页面上是否已经存在脚本。所以我解决了这两个问题

1)知道脚本何时完成加载并开始运行脚本:

function init(callback){
  var script   = document.createElement("script");
  script.type  = "text/javascript";
  script.text  = 'setTimeout(function(){ alert("test msg") }, 10000);';
  script.onload = callback;
  document.body.appendChild(script);
}

init(function(e){
  console.log('script loaded.',e);
});
2)检查脚本是否已添加到dom中

function init(){
  var script   = document.createElement("script");
  script.type  = "text/javascript";
  script.text  = 'setTimeout(function(){ alert("test msg") }, 10000);';
  var checkExistance = document.scripts.filter(function(v){ return v.isEqualNode(script) });
  var exists = checkExistance.length>0;
  if(!exists) document.body.appendChild(script);
}
3)如果需要,可以将它们组合起来…如果脚本已经存在,则不会调用回调,因为文件一添加到DOM中就开始加载

function init(callback){
  var script   = document.createElement("script");
  script.type  = "text/javascript";
  script.text  = 'setTimeout(function(){ alert("test msg") }, 10000);';
  script.onload = callback;
  var checkExistance = document.scripts.filter(function(v){ return v.isEqualNode(script) });
  var exists = checkExistance.length>0;
  if(!exists) document.body.appendChild(script);
}

init(function(e){
  console.log('script loaded.',e);
});

即使eval()也比这好,为什么不把代码放在script.text的init()中呢?这个脚本很好用。我希望你运行一个函数直到它不再运行。“我希望你运行一个函数直到它不再运行。”-我不明白你的意思。您调用的每个函数都将运行,直到停止运行为止。(我同意dandavis的观点:创建一个脚本元素并在其中放入一个JS字符串似乎是一种超越复杂的方式,而不是像
eval()
那样为您完成任务,如果您有一个硬编码的JS字符串,那么
eval()
或脚本元素就没有任何意义了,只需将该代码直接包含在
init()
中即可。)“是否知道如何检查是否已将此脚本添加到页面上?”给脚本一个id,然后搜索该id。