在上一个脚本输入后添加脚本标记行

时间:2016-04-05 14:14:58

标签: javascript jquery html dom mustache

我使用以下代码在现有的封闭脚本标记之后添加脚本标记(通过代码在html文件中添加新的脚本标记)

return '\n' + "<script>\n" + '\t' + scriptContent + "\n</script>\n";

(脚本内容是helloworld

html内容如下所示

enter image description here

我希望第二个开始脚本标记在封闭脚本标记后面(在第一行)中,我该怎么做?第一个&#39; \ n&#39;在这里没有帮助...

只有在我添加 br 时才会工作,如果这是我唯一的解决方案,如何删除完全 br 在这里...

return "<br />" +"\n" +"<script>\n" + '\t' + scriptContent + "\n</script>\n";

点击转换后,请查看以下js小提示,两个脚本标记不是缩进 ...

请看下面的jsFiddle(类似于我从SO中使用的作为参考)

  

的jsfiddle

jsfiddle.net/rd0mn3wh/1

正如您在单击转换时所看到的那样,缩进(新脚本和现有脚本)的脚本对象,我该如何处理它,或者可能有更好的方法吗?

我希望新脚本会像下面一样添加(内部带有alerty的脚本......

....
ui-resourceroots="{'tdrun': './'}">
     </script>
      <script>
           alert("test");
      </script>

我需要以下内容:

  
      
  1. 在提供的脚本ID之后插入一个新脚本(在后面的代码中)   test-ui-bootstrap&#39;)

  2.   
  3. 更新属性值(

    时)      
        

    提供密钥)

      
  4.   

以下两个答案在这里都没有帮助......

3 个答案:

答案 0 :(得分:6)

问题是.insertAfter()正在修剪HTML字符串中的前导空格。解决方案是使用.after()代替。我通过玩你的小提琴来解决这个问题,这里是updated fiddle

答案 1 :(得分:3)

该问题与将要处理返回字符串的位置有关。

\n\r\t等都是JavaScript字符串转义码,因此,它们仅在JavaScript运行时评估字符串时才有效。如果您有一个包含这些代码的JavaScript字符串并将该字符串传递给HTML解析器(例如,通过.innerHTML),那么将要求HTML解析器评估该字符串,并在HTML解析器的世界中{ {1}}是您添加换行符的方式,而不是<br>。这就是\n为你效力的原因。

因此,当JavaScript引擎评估<br>时,会在字符串中注入换行符,但是当HTML解析器获取该换行符时,它会忽略它,就像任何回车符一样在标记中。

在过去,我们可以通过注入\n来获取此“漂亮”代码,该代码会编写您的内容,然后在HTML中添加换行符。你今天仍然可以这样做,但它不被认为是一个好习惯,因为它要求你在HTML文档中内联注入代码,否则你将覆盖整个DOM。

如果这是你想要的东西,因为它会让你感到温暖和模糊,我建议忘掉它并继续前进。

最后,这是创建新元素并将它们注入DOM的DOM标准方法:

document.writeln()
var o = document.getElementById("output");
var scriptContent = "alert('Hello World!')";
var s = document.createElement("script");
var t = document.createTextNode(scriptContent);
s.appendChild(t);
o.appendChild(s);

答案 2 :(得分:0)

这个怎么样:

. . .