我需要注入一些HTML,<iframe>
和一些包含<script>
标记的脚本内容。但是我的方法存在一些问题。似乎关闭</script>
标记没有呈现为字符串文字并且正在被页面解析,这意味着包含我的函数的<script>
块正在过早关闭:
示例:
<script type="text/javascript">
function loadBookingForm($) {
var str = <%= string.Format("'{0}';", this.IframeHtml) %>;
$('#booking-form').text(str).html();
}
</script>
将其呈现为:
<script type="text/javascript">
function loadBookingForm($) {
var str = '<iframe src="https://www.example.com/?noframe=true&skipHeaderFooter=true" style="width:100%;height:1000px;border:0px;background-color:transparent;" frameborder="0" allowtransparency="true" onload="keepInView(this);"></iframe><script>function keepInView(item) {if((document.documentElement&&document.documentElement.scrollTop)||document.body.scrollTop>item.offsetTop)item.scrollIntoView();}
</script>
';;$('#booking-form').text(str).html();}
正如您所看到的,IframeHtml
中的结束脚本标记正在关闭父脚本块,导致调用将#booking-form
html设置为失败。
我正在逃避新行/回车和HtmlDecoding
后面代码中的字符串:
public string IframeHtml
{
get
{
return HttpUtility.HtmlDecode(this.CurrentBookingForm.IframeHtml)
.Replace("\n", string.Empty)
.Replace("\r", string.Empty)
.Replace("'", "\"");
}
}
如何将标记和脚本内容注入目标<div>
元素?