【问题标题】:How to automatically append gwt.codesvr to page URL如何自动将 gwt.codesvr 附加到页面 URL
【发布时间】:2012-02-08 06:07:05
【问题描述】:

在托管模式下运行 GWT 应用程序时,通常需要在查询字符串参数中添加代码服务器的位置,例如,可能需要打开 index.html?gwt.codesvr=127.0.0.1:9997 而不是 index.html。问题是gwt.codesvr 通常不包含在超链接中,因此必须手动添加。将它添加到应用程序中的所有链接似乎不是一个好主意,因为它会干扰最终的 GWT 编译版本。另一个选项是index.html 通过 JavaScript 进行自省并将默认的gwt.codesvr 附加到window.location,但这应该只在应用程序确定它没有被编译后完成,即在GWT module may need to be (re)compiled 警报之后. 我相信,理想的解决方案是让 GWT 在找不到可供选择的排列后允许自定义其执行的操作。默认操作是显示刚才提到的警报警告,但不幸的是,这是不可自定义的。

所以我的问题是:当没有编译排列时,使用默认 gwt.codesvr 自动打开当前页面的最佳方法是什么。

【问题讨论】:

    标签: gwt gwt-hosted-mode


    【解决方案1】:

    我制作了一个书签,点击它可以调试当前页面:

    javascript:window.location+=(window.location.href.indexOf('?')==-1?"?":"&")+"gwt.codesvr=localhost:9997"
    

    但这并没有考虑到最后的哈希值,无论如何您可能都不需要它。那个书签是我唯一使用书签栏的东西......

    可能值得指出的是,这甚至可以用于生产服务器,只要您在本地拥有与该服务器正在运行的大致相同的客户端代码。

    【讨论】:

      【解决方案2】:

      由于我一直在处理“Places”,所以我更新了书签以处理“#”。

      javascript:(function(){h="localhost";p="9997";l="gwt.codesvr="+h+":"+p;s=false;if(document.location.href.indexOf("gwt.codesvr")<0){q=document.location.href.indexOf("?");if(q<0){q=document.location.href.indexOf("#");if(q>0){q=q-1}s=true}if(q<0&&!s){document.location.href=document.location.href+"?"+l}else%20if(q>=0&&!s){b=document.location.href.substr(0,q+1);e=document.location.href.substr(q+1);document.location.href=b+l+"&"+e}else{b=document.location.href.substr(0,q+1);if(q<0){e=""}else{e=document.location.href.substr(q+1)}document.location.href=b+"?"+l+e}}})();
      

      2017 年 2 月 7 日更新-脚本中有错字。更正了。

      【讨论】:

      • 您的 Javascript 中存在错误。你能仔细检查一下你复制的对吗?
      【解决方案3】:

      由于您只会将该 URL 用于开发(并且可能会用于远程调试几次),因此只需将 http://127.0.0.1:8888/index.html?gwt.codesvr=127.0.0.1:9997 (或您使用的任何端口)添加为书签。

      【讨论】:

      • 我不认为您的解决方案与手动添加 gwt.codesvr 有很大不同。当然,总是可以为任何链接添加书签。此外,我可以想到这不是那么有用的情况,例如当 index.html 作为 iframe 加载时......
      • 您只需输入该网址一次,即可启动应用程序,无需修改应用程序中的任何链接以支持coderv
      • 最常见的情况:您的页面顶部有一个注销链接。它向某个注销操作 URL 发出 HTTP 请求,然后重定向到 index.html。由于 index.html 是安全的,您将被重定向到登录页面,登录后您可以看到 index.html。这是您第二次访问 index.html,但这次去掉了 gwt.codesvr 参数
      • 好点。但我认为重定向没有正确实现,因为它去除了参数。
      • 嗯,注销操作的结果通常是固定的,大多数时候是应用程序的主页。您是否暗示注销操作应该通过检查Referer标头或类似的东西来尝试猜测单击注销的用户页面?
      猜你喜欢
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多