通过jquery </div>将HTML和脚本注入<div>元素

时间:2014-12-01 12:19:38

标签: javascript c# jquery html escaping

我需要注入一些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>元素?

0 个答案:

没有答案