JavaScript: get the current executing <script> node?
本问题已经有最佳答案,请猛点这里访问。
我需要知道是否可以获取当前的执行节点?
例子:
1 2 3 4 5 | ..html <script id="x"> console.log(document.currentNode.id); // << this must return"x" ..html |
谢谢!
我不完全确定,但是由
1 2 | var arrScripts = document.getElementsByTagName('script'); var strScriptTagId = arrScripts[arrScripts.length - 1].id; |
这只适用于在页面加载时执行的脚本。如果在延迟脚本中执行或作为页面加载事件的一部分执行,它可能总是报告完全呈现页面中的最后一个
gecko(firefox)支持指向当前脚本节点的文档对象的非标准属性。在回答上述问题之前,您可能需要检查一下。
https://developer.mozilla.org/en-us/docs/dom/document.currentscript
1 2 | <script id="x"> console.log(document.currentScript.id); // << this must return"x" |
安德鲁斯的回答已经是一个好主意,但我经历了所有提到的问题。这就是为什么我选择了一种不同的方法,它对IE、FF和Chrome很有效。
只需在映像的onload事件中执行脚本。定义一个透明的1pixelgif内联,当它触发时,您将收到"this"。
此示例用于在渲染时动态更改DIV内容。我的目标是用基于浏览器的XSL呈现(此处未显示)创建的不同innerHTML填充DIV。
当然,您甚至可以从Internet加载任何图像,因此它不能是内联的。最大的好处是:图像和它的事件正在用新的内容替换它们自己,所以即使图像也会消失。"div"甚至不需要任何"id"分配。
1 2 | empty <img onLoad="changeNodeOnTheFly(this,'hurra');void(0);" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="/> |
剧本:
1 2 3 4 | function changeNodeOnTheFly(ele, text) { ele.parentNode.innerHTML=text; } |
溴海口
使用document.write查找您的位置:
1 2 3 4 5 6 7 8 9 10 | <script data-foo="bar"> var id = 'placeholder-' + Math.floor(Math.random() * 1e10) document.write('') var placeholder = document.getElementById(id) var script = placeholder.previousSibling placeholder.parentNode.removeChild(placeholder) //"bar" is written to the document document.write(script.getAttribute('data-foo')) |
为什么不使用:
1 2 | <script id="x"> console.log(document.getElementById("x").id); |