【问题标题】:add script tag line after the previous script indetend在上一个脚本后添加脚本标记行 indetend
【发布时间】:2016-04-11 07:01:43
【问题描述】:

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

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

(脚本内容为helloworld

html 内容如下所示

我希望第二个开始脚本标记将在封闭脚本标记之后(在第一行)我该怎么做?第一个'\n'在这里没有帮助......

当我添加 br 时它才起作用,如果这是我在这里唯一的解决方案,我该如何删除这个 exact br ...

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

请看下面的js fiddle,点击转换后两个脚本标签都没有缩进...

请看下面的 jsFiddle(与我使用的类似,它取自 SO 作为参考)

JSFiddle

jsfiddle.net/rd0mn3wh/1

当您单击 convert 两个未缩进 的脚本对象(新脚本和现有脚本)时,您可以看到,我该如何处理它,或者也许有更好的方法吗?

我希望新脚本将添加如下(带有警报的脚本......

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

我需要以下物品:

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

  2. 更新属性值(当

    密钥已提供)

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

【问题讨论】:

  • 你试过这个二重奏吗:\r\n
  • 这听起来像是一个 XY 问题。为什么需要这样做?
  • @C0dekid.php - 谢谢,但它不起作用......
  • @RoryMcCrossan - 因为我需要更新一些 html 文件并且我想保留它的结构,是否可以这样做?
  • 试试用双引号之间的第一个“\n”

标签: javascript jquery html dom mustache


【解决方案1】:

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

【讨论】:

  • 我测试了小提琴,这是有效的。应该是公认的答案。
【解决方案2】:

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

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

因此,当 JavaScript 引擎评估 \n 时,会将换行符注入到字符串中,但是当 HTML 解析器获取该换行符时,它会忽略它,就像标记中的任何回车一样.

在过去,我们可以通过注入document.writeln() 来获得这个“漂亮”的代码,它会编写你的内容,然后在 HTML 中添加一个换行符。您今天仍然可以这样做,但这并不是一个好的做法,因为它要求您在 HTML 文档中内联注入代码,否则您将覆盖整个 DOM。

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

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

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);
<div id="output">

</div>

【讨论】:

  • 嗨 Scott,请看下面的 jsFiddle,当您单击提交两个未缩进的脚本对象(新脚本和现有脚本)时,您可以看到,我该如何处理它?谢谢! jsfiddle.net/rd0mn3wh/1
  • 请看我的更新问题,请问如何改进代码?谢谢先生
  • @JhonD 你需要告诉我们你想要脚本的地方,因为它看起来就像你告诉它的地方。
  • 我需要在现有脚本之后添加新脚本,如您所见,我通过 id (test-ui-bootstrap) 搜索它并在其后添加新脚本...它是否回答问题?
  • 你需要检查你自己的小提琴,因为新脚本正好在那个地方。
【解决方案3】:

这个怎么样:

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

【讨论】:

  • 虽然你已经通过对字符串进行分组来缩短字符串,但代码是一样的。
猜你喜欢
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 2020-05-18
  • 2021-07-11
  • 1970-01-01
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多