我有这个javascript
function getTags(tags){
tags = JSON.parse(tags);
text = "";
for (i = 0; i < tags.length; i++) {
text += '<span class="label label-strong">' + tags[i] + '</span> ';
}
return text;
}
和这个带引导程序3的HTML
<div class="pull-right">
<script>document.write(getTags('["Factions", "Minigames"]'));</script>
</div>
并且在页面中,在所有跨度之后,应该在两个跨度之间的空间被写入。 即使我删除那个“拉右”空间仍然被写错了
感谢您的帮助
答案 0 :(得分:1)
许多开发人员会告诉你document.write()
是邪恶的。我倾向于同意Peter Bailey's response,很容易严重滥用它。
无论如何,你的脚本开始时相当安全,但后来Rocket Loader得到了它并决定在页面加载后尝试运行它。它应该能够在window.onload&#34;之后安全地运行任何JavaScript代码,这意味着它会修改您的脚本以便安全运行。您无法在document.write()
之后安全地执行window.onload
。
无论Rocket Loader正在做什么,它都会破坏你的代码,因为当它作为真正的JavaScript运行而不是&#34; RocketScript&#34;时,它运行得很好。因此,您可以将脚本编辑为&#34; safe&#34;或禁用RocketScript。编写代码的更安全的方法是动态构建节点。您的页面已经使用了jQuery,因此示例代码也可以使用:
$(function(){
var nbsp = "\xA0";
$("[data-tags]").each(function(){
var el = $(this);
var tags = el.data("tags").split(",");
for (var i = 0; i < tags.length; i++) {
var tag = $("<span>");
tag.addClass("label label-strong");
tag.text(tags[i]);
el.append(tag, nbsp);
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<div class="pull-right" data-tags="Factions,Minigames"></div>
&#13;