我想使用Play框架中的模板添加Facebook帖子。问题是,即使@Html
不应该转义HTML实体,它们也会被转义。结果"
变为"
,并且不评估脚本。
嵌入代码
post = "<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-post" data-href="https://www.facebook.com/FacebookDevelopers/posts/10151945402933553" data-width="466">
<div class="fb-xfbml-parse-ignore">
<a href="https://www.facebook.com/FacebookDevelopers/posts/10151945402933553">Beitrag</a> von <a href="https://www.facebook.com/FacebookDevelopers">Facebook Developers</a>.
</div>
</div>"`
模板 @Html(post)
输出
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/de_DE/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-post"; data-href="https://www.facebook.com/FacebookDevelopers/posts/10151945402933553" data-width="466">
<div class="fb-xfbml-parse-ignore">
<a href="https://www.facebook.com/FacebookDevelopers/posts/10151945402933553">Beitrag</a> von <a href="https://www.facebook.com/FacebookDevelopers">Facebook Developers</a>.
</div>
</div>
我真的卡住了,因为@Html()
没有按照它应该做的事情进行according to the doc。
答案 0 :(得分:2)
它的工作方式与文档说的完全相同,例如: 模板:
@()
@Html("<div>&\"</div>")
会给你这个输出:
<div>&"</div>
因此,你的应用程序中肯定会发生其他事情,即html-转义字符串。