我正在使用fancybox在弹出窗口中显示带有用户生成标题的照片。在尝试获取弹出窗口中显示的转义标题时,我注意到以下行为:
console.log( $("<a title=\"<script>alert('test')</script>\">").attr('title') );
输出:<script>alert('test')</script>
console.log( $("<p><script>alert('test')</script></p>").html() );
输出:<script>alert('test')</script>
console.log( $("<p><script>alert('test')</script></p>").text() );
输出:<script>alert('test')</script>
我的问题是弹出窗口中的标题是通过调用obj.attr('title')
来返回未转义的标题而不是转义标题。
如何在obj.attr('title')
电话中获取转义标题?
答案 0 :(得分:1)
问题不在于获取,设置已经错误(实体将被浏览器替换)
使用$().attr()
设置标题:
$("<a/>").attr('title',"<script>alert('test')</script>")
..或用&
&
的所有出现
答案 1 :(得分:1)
如果您为标题添加额外的实体级别,它应该可以工作,如下所示:
$("<a title=\"&lt;script&gt;alert('test')&lt;/script&gt;\">").attr('title');
这取决于您的服务器端环境,如何执行此操作,PHP示例:
$title = str_replace("&","&",$title);