【问题标题】:GWT URLs with # doesn't work with IE7带有 # 的 GWT URL 不适用于 IE7
【发布时间】:2011-04-15 15:40:38
【问题描述】:

IE 似乎存在一个已知问题,它不响应带有 # 符号的 URL。 例如:https://mootools.lighthouseapp.com/projects/2706/tickets/638-request-fails-when-url-has-hash-in-ie7

由于我们在基于 GWT 的应用程序中经常使用 #,因此我们缺乏对想要浏览该站点的 IE7 用户的支持。

除了修改 URL 之外,还有其他已知的 GWT 解决方法吗?

【问题讨论】:

    标签: ajax gwt internet-explorer-7


    【解决方案1】:

    历史记录在我们所有 IE 版本的 GWT 应用程序中运行良好...

    那张票是关于 XMLHttpRequest 的,所以不要在你的 xmlhttprequests 中使用散列。它与 GWT 无关。

    【讨论】:

    • 我同意这就是为什么我也用 ajax 标记它的原因,但是由于我们使用的是 GWT,我认为除了修改 URL 之外,GWT 还可以提供一种解决方法。这是否意味着您在 GWT 应用程序中根本不使用“#”?
    • 如果您不在 URL 中使用“#”,那么如何使您的网站符合 Google 的 Ajax Crawling 方案以使其在需要时可抓取 #!在网址中? code.google.com/web/ajaxcrawling/docs/getting-started.html。另外,像 facebook 这样的网站似乎在它们的 URL 中有 # 并且它似乎在 IE7 下工作
    • 当您在浏览器中键入 URL 时,URL 的“位置”部分(# 之后的部分)不会传递到服务器。位置(或哈希,如果您愿意)严格用于客户端。您的服务器不必在请求 URL 中接受 #。这就是为什么没有理由将它与 XmlHttpRequest 一起传递。如果您想传递一些参数,请改用常规查询字符串,例如:?param1=value1&...
    【解决方案2】:

    首先,提供的链接中描述的问题与您使用 XMLHttpRequest 查询的 URL 有关。在 GWT 应用程序中 # 可以出现在普通的 GET 请求中(当您打开页面时,即在您启动 GWT 应用程序时)。当 GWT 进行 XMLHttpRequest 请求时,它使用的 URL 类似于:

    http://yourserver.com/context/com.yourcompany.SomeModule/someService

    里面没有#,所以如果你有任何问题,都与这个问题无关。

    【讨论】:

      【解决方案3】:

      我想我终于弄清楚了问题所在。 我们的 gwt 应用程序作为 iframe 位于另一个 HTML 文件中,因此设置 gwt 历史记录支持

      <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>
      

      必须在外部 HTML 而不是 gwt 中完成。 这个 gwt 脚本旨在支持没有实现 onhashchange 事件的浏览器,例如 IE6 和 IE7。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多