【发布时间】:2014-11-09 16:09:43
【问题描述】:
我有一个 python 应用程序,它可以将 html 作为 json 有效负载的一部分传递到页面。我在该页面中尝试做的是解码 html 并将其动态添加到 DOM。 html 标记用于带有子脚本元素的 Div 元素。这是我的代码,它可以很好地打印出解码后的 HTML,但实际上并没有执行脚本:
<div id="parentDiv">
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type='text/javascript'>
var child_div = "<div id='testDiv'>\n <script src="http://d3js.org/d3.v3.min.js"></script>\n <script>\n d3.select("#testDiv") \n .data([4, 8, 15, 16, 23, 42])\n .enter().append("p")\n .text(function(d) { return "I'm number " + d + "!";\n });\n </script>\n </div>";
decoded = $('<div />').html(child_div).text();
console.log(decoded);
$("#parentDiv").append(decoded);
</script>
</div>
但是,如果我使用上面代码中记录的 html 并从中创建一个页面,它可以正常执行脚本。这是解码后的 html 的样子,也是我希望动态添加到父 div 的内容:
<div id="parentDiv">
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<div id='testDiv'>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
d3.select("#testDiv")
.data([4, 8, 15, 16, 23, 42])
.enter().append("p")
.text(function(d) { return "I'm number " + d + "!"; });
</script>
</div>
</div>
我在这里做错了什么?
【问题讨论】:
-
你是不是少了一个分号??
-
我是,但这并不能解决我的问题。
-
你不能直接在页面上包含 d3js 吗?补充:我的意思是
<script src="http://d3js.org/d3.v3.min.js"></script>part.just like jQuery -
我宁愿保持这样,被注入页面的 div 元素知道它的所有引用/包含,而不是让页面“所有者”必须进行修改以支持我的 sn-p。
-
$(decoded).appendTo("#parentDiv");
标签: javascript jquery python html