转义的title属性在jquery中变为非转义

时间:2011-06-15 06:58:10

标签: jquery

我正在使用fancybox在弹出窗口中显示带有用户生成标题的照片。在尝试获取弹出窗口中显示的转义标题时,我注意到以下行为:

console.log( $("<a title=\"&lt;script&gt;alert('test')&lt;/script&gt;\">").attr('title') );

输出:<script>alert('test')</script>

console.log( $("<p>&lt;script&gt;alert('test')&lt;/script&gt;</p>").html() );

输出:&lt;script&gt;alert('test')&lt;/script&gt;

console.log( $("<p>&lt;script&gt;alert('test')&lt;/script&gt;</p>").text() );

输出:<script>alert('test')</script>

我的问题是弹出窗口中的标题是通过调用obj.attr('title')来返回未转义的标题而不是转义标题。

如何在obj.attr('title')电话中获取转义标题?

2 个答案:

答案 0 :(得分:1)

问题不在于获取,设置已经错误(实体将被浏览器替换) 使用$().attr()设置标题:

$("<a/>").attr('title',"&lt;script&gt;alert('test')&lt;/script&gt;")

..或用&

替换&amp;的所有出现

答案 1 :(得分:1)

如果您为标题添加额外的实体级别,它应该可以工作,如下所示:

$("<a title=\"&amp;lt;script&amp;gt;alert('test')&amp;lt;/script&amp;gt;\">").attr('title');

这取决于您的服务器端环境,如何执行此操作,PHP示例:

$title = str_replace("&","&amp;",$title);