javascript - 使用 Javascript 嵌入包含 <script> 的 MvcHtmlString

标签 javascript jquery asp.net-mvc asp.net-mvc-3 mvchtmlstring

下面嵌入一些方法Html来自string<div>使用 Javascript(使用一些 JQuery)可以工作:

var div = $('#someId');
var testHtml = '<script></script><div>dummy Content</div>';
div.html(testHtml);

Html 代码嵌入并显示在 div 中。如果我放一些alert('Test') -声明在<script>标签,警报就会出现。

同样有效的是:

<div id="someId">@MvcHtmlString.Create("<script></script><div>dummy Content</div>")</div>

但是我需要传递一个 MvcHtmlString到一个 javascript 函数,然后用 javascript 嵌入这个字符串。

如果字符串中没有 javascript 代码,则此方法有效:

var div = $('#someId');
var inputItem = '@MvcHtmlString.Create("<div>dummy Content</div>")';
div.html(inputItem);

但是如果字符串中有 javascript 内容,<script> -部分未嵌入且内容未正确显示。

所以这不能正常工作:

var div = $('#someId');
var inputItem = '@MvcHtmlString.Create("<script></script><div>dummy Content</div>")';
div.html(inputItem);

有人可以解释为什么这不起作用吗?有什么简单的技巧吗?

最佳答案

我不知道你在哪个浏览器中测试过(我在 IE8 和 Chrome22 中测试过)但是你的原始示例也不起作用:

var div = $('#someId');
var testHtml = '<script></script><div>dummy Content</div>';
div.html(testHtml);

检查这个 JSFiddle

因为你不能拥有"</script>"在 JS 字符串中,因为浏览器将其解释为结束 <script>标签。看到这个问题:Script tag in JavaScript string

所以解决方案对您来说是一样的,所以不要直接使用 </script>字符串内:

<script type="text/javascript">
    var div = $('#someId');
    var testHtml = '@MvcHtmlString.Create("<script>alert(\"test\");</sc' + 'ript><div>dummy Content</div>")';
    div.html(testHtml);
</script>

您也可以在这个 JSFiddle 中检查它的实际操作.

关于javascript - 使用 Javascript 嵌入包含 &lt;script&gt; 的 MvcHtmlString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015930/

相关文章:

javascript - 如何在javascript中将字符串转换为化学式

c# - 从特定位置的JSON格式中取出一条记录

asp.net-mvc - Devexpress MVC Gridview 根据所选行自定义排序

asp.net-mvc - 如何通过 SignalR Hub 向用户发送通知新消息

javascript - jquery animate 仅通过按键事件触发一次

javascript - React Draft-js block 插入

javascript - 切换 bool 数据属性仅适用于一次 Jquery

jquery - 当可见性最初隐藏时,使用 JQuery 淡入并显示页面减慢

javascript - module exports = mongoose 模型在 NodeJs 中做什么

javascript - jQuery 中的子对象 - 如何在变量中选择?