下面我有一个HTML标记,并使用JavaScript来提取窗口小部件属性的值.此代码将提醒<test>而不是<test>,因此浏览器会自动unescapes属性值:
alert(document.getElementById("hau").attributes[1].value)Run Code Online (Sandbox Code Playgroud)
<div id="hau" widget="<test>"></div>Run Code Online (Sandbox Code Playgroud)
我的问题是:
&lt;test&gt;)我<label class='ash'>Comment Removed</label>在数据库中.
当我在网格上显示这个.我在页面上看到了这个:
<label class='ash'>Removed</label>
Run Code Online (Sandbox Code Playgroud)
其实我应该以灰色删除
我怎样才能像在MVC 3 Razor视图中那样将其转换为Html?
@Html.Raw(HttpUtility.HtmlDecode(comment.txt)) works fine
Run Code Online (Sandbox Code Playgroud)
我在MVC 3上使用jquery 1.6
我试过了:
$("<label class='ash'>Comment Removed</label>").html()
unescape($(txt)).html()
Run Code Online (Sandbox Code Playgroud)
可能很简单,但无法弄清楚
我花了一些时间寻找最好的方法来逃避html字符串并找到一些讨论:讨论1 讨论2.它引导我替换所有功能.然后我做了性能测试,并试图找到实现类似速度的解决方案,但没有成功:(
这是我的最终测试用例集.我在网上找到它并随着我的尝试扩展(底部有4个案例)但仍无法达到replaceAll()性能.
什么是秘密女巫使replaceAll()解决方案如此迅速?
映入眼帘!
代码片段:
String.prototype.replaceAll = function(str1, str2, ignore)
{
return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2);
};
Run Code Online (Sandbox Code Playgroud)
qwerty的学分
迄今为止最快的案例:
html.replaceAll('&', '&').replaceAll('"', '"').replaceAll("'", ''').replaceAll('<', '<').replaceAll('>', '>');
Run Code Online (Sandbox Code Playgroud) 以下代码从Ajax json调用获取值,并应将其附加到具有相应值的div.事实是,它作为文本而不是html附加,所以我在页面上看到我的html作为文本.我怎样才能解决这个问题?
$.ajax({
url: "https://domain.com/maprequest.php",
type: "POST",
dataType: 'json',
data: JSON.stringify(url_array),
crossDomain: true,
success: function(response) {
$.each(response, function(k, v) {
if (v != "") {
$('.offer-list li .img a')[k].append("<div class='hoverbox'><img src='" + v + "' alt='hover' /></div>");
}
});
}
});
Run Code Online (Sandbox Code Playgroud) 例如,如果我想向用户显示x < 3HTML中的字符串,我需要替换该<字符<.是否有预先构建的函数可以在JavaScript或jQuery中执行此操作,将任何文本字符串转换为相应的HTML?
当我提交/ POST数据到服务器,我需要的HTMLEncode它的字符(相关的),因为通过设置禁止输入检查validationRequest = false是不是一个好的做法.
所有解决方案最终都在替换字符串中的字符:
这就是我写的.
function htmlEncode(str) {
str = str.replace(/\&/g, "&");
str = str.replace(/\</g, "<");
str = str.replace(/\>/g, ">");
str = str.replace(/ /g, " ");
return str;
}
Run Code Online (Sandbox Code Playgroud)
但是显然正则表达式可以用更快的东西代替(不要误解我 - 我喜欢正则表达式).
此外,使用索引+子字符串似乎很浪费.
这样做的最快方法是什么?
当我从ASP.NET MVC视图中的TinyMCE发布时,我收到此错误.
错误:
请求验证已检测到潜在危险的客户端输入值,并且请求的处理已中止
从谷歌搜索,它说只是在我做的顶部的Page指令中添加了validateRequest,但我仍然得到这个错误.如您所见,下面是我在视图中的代码:
<%@ Page validateRequest="false" Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
Run Code Online (Sandbox Code Playgroud) 我意识到我可以使用以下内容将元素添加到元素:
$(...).prepend(myText);
Run Code Online (Sandbox Code Playgroud)
但是,如果myText是,让我们说,"<span>"我实际上希望显示该文本,.prepend()而是预先添加一个空的span元素.推荐的解决方法是什么?我是否真的需要手动HTML转义文本或是否有更优雅的东西?
我想在JavaScript中构建一些函数,将文本发送textarea到div.
我想要它做以下事情
如果用户尝试将html源发送到textarea,它将显示文本,而不是实际的html源.
例如:
如果用户尝试发送: <img src='aa.png'>
我想在div中看到文字:<img src='aa.png'>,并且不想看到实际图像:aa.png
我一直在寻找一天左右如何用JS或jQuery做些什么,并找到了几个解决方案,但还没有什么可靠的.
我想用这个:
<code class="codeIt">
<h2> This is an H2 </h2>
</code>
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
<h2> This is an H2 </h2>
我知道我可以做到这一点:
<code class="codeIt">
<h2> This is an H2 </h2>
</code>
Run Code Online (Sandbox Code Playgroud)
...但我不想手动搜索并替换我在这些块中的代码,而是在浏览器中即时完成.这可能吗?
我很喜欢jQuery,所以我尝试过.replaceWith或者是JavaScript,.replace但到目前为止我还没有得到它需要的地方.我正在替换整个标签或做其他错误.
我的问题是:我怎么会写一个简单的jQuery(或定期JS)帮我代替我<和我>与HTML实体喜欢<和>我的内<code>标签.
我感谢任何帮助,谢谢.
我设法让它工作得很好@Prisoner如何解释,它非常漂亮,但是在我的特殊情况下需要稍微扩展,因为我有一个以上的代码块.codeIt,所以我必须检查每个元素和输出...否则它将保持相同的输出(如第一个块)
感谢大家的回答.
javascript ×7
html ×6
jquery ×6
html-encode ×2
asp.net-mvc ×1
attributes ×1
browser ×1
performance ×1
scripting ×1
tags ×1
tinymce ×1