代码之家  ›  专栏  ›  技术社区  ›  AndreyAkinshin

Google Chrome和Safari中的Google地图和Ajax存在奇怪的问题

  •  2
  • AndreyAkinshin  · 技术社区  · 15 年前

    我正在使用谷歌地图API和ASP.NET AJAX开发Web应用程序。这是我的页面加载的javascript代码:

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

    第一次运行成功。但是在执行了一些ASP.NET AJAX函数之后,我们有了奇怪的效果:在Internet Explorer、Mozilla Firefox和Opera中,一切都很好,但是在Google Chrome和Safari中,带有HTML标记的文本是不可见的。换句话说,在Google Chrome中,我们有文本:你好,!艾斯

    我想做的应用程序,通常会在谷歌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函数。

    更新2:

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

    首先,对行动的完整描述:

    1. 加载页面。gmap在javascript中有几个带有dblclick事件的标记。dblclick event exec marker.openinfowindowhtml(/my text/)。/我的文本/位于我页面的javascript中。
    2. 我双击标记。我看到一个正常格式的信息窗口
    3. 执行DoPostback(Starndard ASP.NET Postback)
    4. 在服务器端,javascript被更新为
    5. 服务器返回一些信息和/我的文本/到我的页面
    6. 我双击标记。我看到一个格式错误的信息窗口。

    一个有趣的事实让我很尴尬:

    我尝试设置为“你好”,“世界”,“测试”,“测试”

    在所有浏览器中使用Ajax功能之前:你好, 世界 ,<b>测试</b>_

    在Google Chrome和Safari中的Ajax函数之后:“你好, 测试

    在Mozilla、Opera和ie:__hello中的Ajax函数之后, 世界 ,<b>测试</b>_

    Chrome和Safari有哪些可能导致这种行为的功能?现在,我可以为每个浏览器分别编写必要的信息窗口文本。但我想找到一个正常的方法来解决我的问题。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Koobz    15 年前

    按ctrl+shift+j打开chrome开发工具。

    1. 在中断所有内容的函数调用之前设置断点。
    2. 尝试复制错误。
    3. 在中断点点击后,单步执行代码,直到文本消失。
    4. 在文本首次消失后设置断点。
    5. 重复此过程。细化断点,直到缩小错误发生的范围。

    它可以是任何数量的东西。我不知道你在做什么样的Ajax。执行请求后,是否动态更新页面上的内容?这个更新代码可能正在修改不应该修改的DOM元素。如果是这样的话,使用上面的方法进行追踪将有助于解决问题。

    如果您使用的是jquery,那么可能您的某个选择器出了问题,它正在吞噬内容。Chrome非常好,我不敢相信它是一个javascript bug或者类似的东西。

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


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

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

        2
  •  2
  •   RedBlueThing    15 年前

    您看到信息窗口中的HTML标记有问题吗?作为实验,尝试:

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

    我想知道在DOM中是否有一个未关闭的粗体标记?

    我是 messing around 有这个问题,但我没能复制它。了解一下Ajax函数的作用是很有帮助的。

        3
  •  1
  •   conorgriffin    15 年前

    试试这个:

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

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

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