谷歌Chrome和Safari中谷歌地图和Ajax的奇怪问题

时间:2010-01-26 18:48:22

标签: ajax google-maps safari google-chrome

我正在使用Google Maps API和ASP.NET Ajax开发网络应用程序。这是我的PageLoad的JavaScript代码:

map.openInfoWindowHtml(map.getCenter(),'Hello, <b>world</b>!');

首次运行成功。但是在执行一些ASP.NET Ajax函数之后我们产生了奇怪的效果:在Internet Explorer中,Mozilla Firefox和Opera一切都很好,但在谷歌Chrome和Safari中,带有html标签的文本是不可见的。换句话说,在谷歌浏览器中我们有文字:“你好,!”

我想制作通常在Google Chrome和Safari中使用的应用程序。我该怎么做?

更新

字符串"Hello, <b>world</b>, <strong>world</strong>, <span style='font-weight: bold;'>World</span>, <a href='http://ya.ru'>Link</a>."转换为"Hello, , , , . "(我检查了DOM)。言语真的在消失。

我在任何 Ajax函数上观察到这种奇怪的效果,并向服务器发出请求。

UPDATE2:

非常感谢Koobz提出的许多重要问题。他们帮助我更详细地了解了这个问题。

首先,完整描述行动:

  1. 加载页面。 GMap在JavaScript中有几个带有dblclick事件的标记。 Dblclick事件exec marker.openInfoWindowHtml(/ My text /)。 /我的文字/位于我的网页的JavaScript中。
  2. 我双击标记。我看到一个格式正常的infoWindow
  3. Exec __doPostBack(starndard ASP.NET PostBack)
  4. 在服务器端,JavaScript使用相同的
  5. 进行更新
  6. 服务器使用/ My text /返回一些信息到我的页面
  7. 我双击标记。我看到一个格式错误的infoWindow。
  8. 一个有趣的事实,让我感到尴尬:

    我尝试设置为“Hello,&lt; b&gt; world&lt; / b&gt ;,&amp; lt; b&amp; gt; test&amp; lt; / b&amp; gt;”

    在所有浏览器中使用Ajax之前,我有:“你好,世界,&lt; b&gt; test&lt; / b&gt;”

    Google Chrome和Safari中的Ajax功能之后:“您好,测试

    在Mozilla,Opera和IE中执行Ajax功能之后:“Hello, world ,&lt; b&gt; test&lt; / b&gt;”

    哪些Chrome和Safari具有可能导致此类行为的功能?现在我可以为每个浏览器单独编写必要的infoWindow-text。但我想找到解决问题的正常方法。

3 个答案:

答案 0 :(得分:3)

点击ctrl + shift + j打开你的chrome开发者工具。

  1. 在函数调用之前设置断点,打破一切。
  2. 尝试重现该错误。
  3. 在断点点击后,逐步执行代码,直到文本消失。
  4. 在文本首次消失后设置断点。
  5. 重复此过程。优化断点,直到缩小发生错误的位置。
  6. 它可以是任何数量的东西。我不知道你在做什么样的Ajax。您是在执行请求后动态更新页面上的内容吗?此更新代码可能正在修改它不应该的dom元素。如果是这种情况,追踪使用上述方法将有助于确定它。

    如果您正在使用jQuery,那么您的某个选择器可能会出现问题并且正在消耗内容。 Chrome是非常好的,我很犹豫相信这是一个javascript错误或类似的东西。

    验证您的HTML。如果你正在遍历dom,无效的标记可能会导致chrome“看到”与其他浏览器不同的图片。只需查找损坏的标签并忽略验证器所抱怨的所有其他内容。


    狂野猜测:但它剥离HTML的方式可能指向某种XSS保护。 Ajax脚本是否在访问者正在查看的域之外的其他域上返回新的HTML代码?

    这里的一些信息: http://groups.google.com/group/chromium-dev/browse_thread/thread/d2931d7b670a1722/d56bdfccfcef677f

答案 1 :(得分:2)

您是否在信息窗口中看到了任何html标签的问题?作为实验,请尝试:

<span style="font-weight: bold;">World</span>.  

我想知道DOM中某处是否有未封闭的粗体标记?

messing around有这个问题,但我无法重现它。看看Ajax函数的作用会有所帮助。

答案 2 :(得分:1)

试试这个:

map.openInfoWindowHtml(map.getCenter(),'Hello, <strong>world</strong>!');

强标签更符合标准,值得一试

正如其他人所说,你需要发布你的代码。