为Google地球创建kml内容时,我注意到它在尝试转义字符以防止JavaScript代码执行方面存在差异。如果<name></name>
标记内的字符被转义两次到其HTML字符代码,例如&#34; <script></script>
&#34;到&#60;script&#62;&#60;/script&#62;
然后它会在侧栏中正确显示为<script></script>
,但在地标标签的标签中,它会显示为<script></script>
。最好是文本被转义,以便它在两个地方显示完全相同。
此帖子中添加了示例文件及其Google地球代表。
第一张图片显示未转义的字符串,您可以看到侧边栏中的一些文字会切断标签,但会在主窗口中正确显示整个标签。您还可以看到标记中的某些JavaScript已在窗口中执行。附件unescaped.kml是在此屏幕截图中打开的文件。
使用的KML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--The name of the placemark is escaped properly on the label of the pushpin but not in the sidebar (Does not validate with KML Validator)-->
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Placemark>
<name><script>document.write("TEST")</script> Text</name>
<description>Text</description>
<Point>
<coordinates>10,10,0 </coordinates>
</Point>
</Placemark>
</kml>
第二个图像显示相同的字符串已正确转义以避免执行JavaScript,但它不会在主窗口的地标标签上正确解析html字符代码。附件文件escaped.kml是在此屏幕截图中打开的文件。
使用的KML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!--The name of the placemark is escaped properly on the label of the pushpin but not in the sidebar (Does not validate with KML Validator)-->
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Placemark>
<name>&#60;script&#62;document.write("TEST")&#60;/script&#62; Text</name>
<description>Text</description>
<Point>
<coordinates>10,10,0 </coordinates>
</Point>
</Placemark>
</kml>
是否有正确的解决方法可以正确地转义文本并正确地正确转义字符串并正确显示它们或者这只是Google Earth中我必须处理的错误?