Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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 如何获取currentScript属性?_Javascript_Html_Dom - Fatal编程技术网

Javascript 如何获取currentScript属性?

Javascript 如何获取currentScript属性?,javascript,html,dom,Javascript,Html,Dom,如何获取currentScript属性 *我正在使用此代码获取currentScript,但由于脚本是异步的,因此无法正常工作 var target = document.currentScript || (function() { var scripts = document.getElementsByTagName('script'); return scripts[scripts.length - 1]; })(); 对不起,我正在学英语 关于,请尝试收听(未经测试): 尝试收听

如何获取currentScript属性

*我正在使用此代码获取currentScript,但由于脚本是异步的,因此无法正常工作

var target = document.currentScript || (function() {
  var scripts = document.getElementsByTagName('script');
  return scripts[scripts.length - 1];
})();
对不起,我正在学英语

关于,请尝试收听(未经测试):

尝试收听(未经测试):


如何使用
document.currentScript.async


来源:

如何使用
document.currentScript.async


来源:

在document.currentScript实际具有值的DOM生命周期点期间,您的代码不能执行。它仅在脚本元素的初始执行时具有值。据我所知,脚本元素仅在文档生命周期的两个不同点执行:

  • 加载时,对于文档原始HTML中的脚本元素
  • 当脚本元素直接插入到文档中时
  • 如果脚本中的某个函数在其他点被调用,document.currentScript将为null,或者它可能不是您期望的元素(就像插入一个脚本元素来调用另一个脚本元素中的函数)

    我发现将jQuery$(…)与html字符串一起使用通常会使document.currentScript为空。据我所知,如果在插入HTML块时需要document.currentScript为非null,则不能使用jQuery的HTML()方法,可能需要编写自己的方法

    当然,如果您只是插入一块包含脚本元素的HTML,它们甚至不会执行,因为它们不是直接插入的。因此,您的setHtml()函数必须重新插入每个脚本元素,最后您将得到大致如下代码(如CoffeeScript中的代码):


    如果您想处理其他语言的脚本元素,但仍然想利用document.currentScript,则需要将它们编译为JavaScript,并将newScript.textContent设置为编译后的代码,或者如果您只能使用解释器,您需要将newScript.textContent设置为您构造的JavaScript表达式,该表达式以script.textContent作为字符串调用解释器。

    当document.currentScript实际具有值时,您的代码必须在DOM生命周期点期间不执行。它仅在脚本元素的初始执行时具有值。据我所知,脚本元素仅在文档生命周期的两个不同点执行:

  • 加载时,对于文档原始HTML中的脚本元素
  • 当脚本元素直接插入到文档中时
  • 如果脚本中的某个函数在其他点被调用,document.currentScript将为null,或者它可能不是您期望的元素(就像插入一个脚本元素来调用另一个脚本元素中的函数)

    我发现将jQuery$(…)与html字符串一起使用通常会使document.currentScript为空。据我所知,如果在插入HTML块时需要document.currentScript为非null,则不能使用jQuery的HTML()方法,可能需要编写自己的方法

    当然,如果您只是插入一块包含脚本元素的HTML,它们甚至不会执行,因为它们不是直接插入的。因此,您的setHtml()函数必须重新插入每个脚本元素,最后您将得到大致如下代码(如CoffeeScript中的代码):


    如果您想处理其他语言的脚本元素,但仍然想利用document.currentScript,则需要将它们编译为JavaScript,并将newScript.textContent设置为编译后的代码,或者如果您只能使用解释器,您需要将newScript.textContent设置为您构造的JavaScript表达式,该表达式以script.textContent作为字符串调用解释器。

    document.currentScript与chrome和FF完美配合,但IE不支持它。这是痛苦的

     scripts[scripts.length - 1];
    

    以上代码不可信。它在异步条件下延迟。

    document.currentScript与chrome和FF完美配合,但IE不支持它。这是痛苦的

     scripts[scripts.length - 1];
    

    以上代码不可信。它在异步条件下延迟。

    因此,我尝试获取currentScript属性,因为这是真正获取currentScript的唯一方法。。。该项目必须与旧浏览器(Goddam IE)兼容,IE中不支持“currentScript”属性。但感谢您的回答。因此,我尝试获取currentScript属性,因为这是真正获取currentScript的唯一方法。。。该项目必须与旧的浏览器(Goddam IE)兼容,并且IE中不支持“currentScript”属性。但感谢您的回答。
     scripts[scripts.length - 1];