Javascript 在发出调用的脚本的节点后追加子节点
当下面的调用完成时,该类创建一组元素(一个表单),然后我想在调用它的脚本之后添加它们 我一直在研究各种类似的问题,但其中最好的只是在页面上最后一个脚本之后附加它 它可以很好地作用于头部,但不能作用于身体Javascript 在发出调用的脚本的节点后追加子节点,javascript,dom,Javascript,Dom,当下面的调用完成时,该类创建一组元素(一个表单),然后我想在调用它的脚本之后添加它们 我一直在研究各种类似的问题,但其中最好的只是在页面上最后一个脚本之后附加它 它可以很好地作用于头部,但不能作用于身体 <script type="text/javascript"> new exampleClass(); </script> 新示例类(); 您应该具有某种类型的唯一标识,以便在脚本之后查找和附加元素。如果您有id,可以使用document.getElementById
<script type="text/javascript">
new exampleClass();
</script>
新示例类();
您应该具有某种类型的唯一标识,以便在脚本之后查找和附加元素。如果您有id,可以使用document.getElementById(),也可以使用document.getElementsByTagName(“脚本”)获取脚本元素并获取所需的脚本元素,然后使用appendChild()您应该具有某种类型的唯一标识,以便在脚本之后查找和追加元素。如果您有id,可以使用document.getElementById(),也可以使用document.getElementsByTagName(“脚本”)获取脚本元素并获取所需的脚本元素,然后使用appendChild()好的,下面是提到的可怕的攻击
HTML
东西
noop();
更多的东西
新示例类();
更多的东西
noop();
更多的东西
Javascript
function noop() {}
function appendAfter(node, newNode) {
if (node.nextSibling) {
node.parentNode.insertBefore(newNode, node.nextSibling);
} else {
node.parentNode.appendChild(newNode);
}
}
function ExampleClass() {
window.addEventListener("load", function () {
var scripts = document.getElementsByTagName("script"),
div = document.createElement("div"),
length = scripts.length,
i = 0,
script;
div.appendChild(document.createTextNode("Inserted"));
while (i < length) {
script = scripts[i];
if (script.firstChild && script.firstChild.nodeValue.indexOf("ExampleClass()") !== -1) {
appendAfter(script, div);
}
i += 1;
}
}, false);
}
函数noop(){}
函数appendAfter(节点,新节点){
if(node.nextSibling){
node.parentNode.insertBefore(newNode,node.nextSibling);
}否则{
node.parentNode.appendChild(newNode);
}
}
函数ExampleClass(){
addEventListener(“加载”,函数(){
var scripts=document.getElementsByTagName(“脚本”),
div=document.createElement(“div”),
length=scripts.length,
i=0,
剧本
div.appendChild(document.createTextNode(“插入”);
while(i
在好的,这里是提到的可怕的黑客 HTML
东西
noop();
更多的东西
新示例类();
更多的东西
noop();
更多的东西
Javascript
function noop() {}
function appendAfter(node, newNode) {
if (node.nextSibling) {
node.parentNode.insertBefore(newNode, node.nextSibling);
} else {
node.parentNode.appendChild(newNode);
}
}
function ExampleClass() {
window.addEventListener("load", function () {
var scripts = document.getElementsByTagName("script"),
div = document.createElement("div"),
length = scripts.length,
i = 0,
script;
div.appendChild(document.createTextNode("Inserted"));
while (i < length) {
script = scripts[i];
if (script.firstChild && script.firstChild.nodeValue.indexOf("ExampleClass()") !== -1) {
appendAfter(script, div);
}
i += 1;
}
}, false);
}
函数noop(){}
函数appendAfter(节点,新节点){
if(node.nextSibling){
node.parentNode.insertBefore(newNode,node.nextSibling);
}否则{
node.parentNode.appendChild(newNode);
}
}
函数ExampleClass(){
addEventListener(“加载”,函数(){
var scripts=document.getElementsByTagName(“脚本”),
div=document.createElement(“div”),
length=scripts.length,
i=0,
剧本
div.appendChild(document.createTextNode(“插入”);
while(i
在上,根据你的一些评论和其他类似的评论,我曾想过做类似的事情,而且似乎奏效了
// Generate random string we can use as element id
var rs = Math.random().toString(36).substring(2);;
// Document write an empty div with the above string as id
document.write('<div id="' + rs + '"></div>');
// Get the element to use for append
var ip = document.getElementById(rs);
//生成可以用作元素id的随机字符串
var rs=Math.random().toString(36).子字符串(2);;
//文档使用上面的字符串作为id写入一个空div
文件。写(“”);
//获取用于append的元素
var ip=document.getElementById(rs);
如果您认为它可能有致命的缺陷,请随时发表评论。基于您的一些评论和其他类似的评论,我曾想过做类似的事情,而且似乎有效
// Generate random string we can use as element id
var rs = Math.random().toString(36).substring(2);;
// Document write an empty div with the above string as id
document.write('<div id="' + rs + '"></div>');
// Get the element to use for append
var ip = document.getElementById(rs);
//生成可以用作元素id的随机字符串
var rs=Math.random().toString(36).子字符串(2);;
//文档使用上面的字符串作为id写入一个空div
文件。写(“”);
//获取用于append的元素
var ip=document.getElementById(rs);
如果您认为它可能有致命缺陷,请随时发表评论。我同意,我建议在脚本标签上使用ID。不能保证最后一个脚本标记是当前的(请参阅),我同意,我建议在脚本标记上使用ID。无法保证最后一个脚本标记是当前的(请参阅)为什么必须直接在调用之后?因为我正在插入HTML。上面的代码是在应该注入HTML的地方添加的。为什么不使用一个隐藏的div或带有标识插入位置的ID的东西呢?这似乎是一种奇怪的方式,因为我只能控制JavaScript中的代码。标签不在我的控制范围内,没有id或任何东西。此外,脚本需要是通用的。因此,从js文件内部,我需要插入,就像我要做document.write一样,但使用append,因为我的html不是字符串,而是对象。我担心你可能会不走运。为什么一定要在电话后直接发送呢?因为我正在插入HTML。上面的代码是在应该注入HTML的地方添加的。为什么不使用一个隐藏的div或带有标识插入位置的ID的东西呢?这似乎是一种奇怪的方式,因为我只能控制JavaScript中的代码。标签不在我的控制范围内,没有id或任何东西。此外,脚本需要是通用的。因此,从js文件内部,我需要插入,就像我要做document.write一样,但使用append,因为我的html不是字符串,而是对象。我担心你可能会走运。在我看来,这也很不礼貌,但如果你真的在HTML中没有发言权,你就没有那么多选择。在我看来,这也很不礼貌,但如果你真的在HTML中没有发言权,你就没有那么多选择。