相关疑难解决方法(0)

为什么"element.innerHTML + ="代码不好?

我被告知不要使用element.innerHTML += ...这样的东西来附加东西:

var str = "<div>hello world</div>";
var elm = document.getElementById("targetID");

elm.innerHTML += str; //not a good idea?
Run Code Online (Sandbox Code Playgroud)

这有什么问题?我还有其他选择吗?

html javascript anti-patterns innerhtml

46
推荐指数
4
解决办法
3万
查看次数

使用JavaScript加载HTML模板

我正在努力为我的问题找到一个干净的解决方案,并想知道是否有人可以提供一些提示.

我有"templates.html",其中包含一些HTML片段,我想将其加载到JavaScript中并使用.访问模板/片段的好方法是什么,记住templates.html不是加载的DOM文档?

我正在考虑使用document.open创建DOM来访问,但我认为这在某些浏览器上存在问题.

html javascript templates

41
推荐指数
5
解决办法
7万
查看次数

为什么通过DOMParser创建的脚本元素不会执行?

我在Ajax中加载HTML,解析它DOMParser并将所有childNodes文档主体放入文档片段中.

当我将片段添加到当前文档的正文中时,<script>不会执行标记.

我摆弄并想出如果我用新动态创建的脚本标签替换它们,它们就会被正确执行.

我想知道为什么?

例如

var html = "Some html with a script <script>alert('test');</script>";

var frag = parsePartialHtml(html);


fixScriptsSoTheyAreExecuted(frag);


document.body.appendChild(frag);


function fixScriptsSoTheyAreExecuted(el) {
  var scripts = el.querySelectorAll('script'),
      script, fixedScript, i, len;

  for (i = 0, len = scripts.length; i < len; i++) {
    script = scripts[i];

    fixedScript = document.createElement('script');
    fixedScript.type = script.type;
    if (script.innerHTML) fixedScript.innerHTML = script.innerHTML;
    else fixedScript.src = script.src;
    fixedScript.async = false;

    script.parentNode.replaceChild(fixedScript, script);
  }
}


function parsePartialHtml(html) {
  var doc = …
Run Code Online (Sandbox Code Playgroud)

html javascript dynamic-script-loading

10
推荐指数
1
解决办法
1790
查看次数