我有一个简单的 html 页面,其中包含一个 div 元素。div 的 innerHTML 属性是通过查询字符串设置的。在查询字符串中,我传递 html 字符串,即
<p style='font-size:20px;color:green;'> Sun rises in the east </p> etc...
我得到了适当的输出。
但是,如果我在样式属性中传递颜色代码,例如 #00990a,则不会显示任何内容。
有人可以帮我解决这个问题吗?
我有一个简单的 html 页面,其中包含一个 div 元素。div 的 innerHTML 属性是通过查询字符串设置的。在查询字符串中,我传递 html 字符串,即
<p style='font-size:20px;color:green;'> Sun rises in the east </p> etc...
我得到了适当的输出。
但是,如果我在样式属性中传递颜色代码,例如 #00990a,则不会显示任何内容。
有人可以帮我解决这个问题吗?
既然你没有给我们看任何代码,我猜……</p>
在 URI 中,#
指示片段标识符的开始(如?
指示查询字符串的开始)。您的颜色终止了查询字符串并启动了片段标识符。您需要对 URL 中具有特殊含义的任何字符进行 URL 编码。(#
是%23
)。
请确保在服务器上清理传递的 HTML 和 CSS。否则很容易让自己暴露于 XSS 攻击。
如果有一个包含 a 的颜色代码,那么#
之后的所有内容都将被视为片段标识符。为避免这种情况,您必须对您的参数值进行 url 编码(替换#
为%23
d 对具有特殊含义的其他字符 ( @&%=?#...
) 执行相同操作)。
最后你的网址应该是这样的:
PageUrl?Content=%3Cp+style%3D%27color%3A%23009900%27%3EContent%3C%2Fp%3E