我已经看到了一些与其他平台一起做这个的技术,但是想知道是否有人有一个干净的方法来做到这一点。
我的应用程序有一个主机HTML文件,并使用标准MVP / Places / Activities来解析哈希片段。它为不同的元素显示各种类似的按钮。 FB(使用lint工具确认)只会读取主页的静态HTML,所以我需要在返回给请求者之前对其进行操作(GWT中没有任何问题可以解决这个问题)。
我使用Guice-y com.google.inject.servlet.ServletModule,因此我可以创建类似的内容:
serve("/fb/*").with(MetaTagAdder.class);
我可以使用/ fb / *作为Like按钮的网址。因此,请显示托管页面的HTML(根据需要添加动态元标记)。然后* .nocache.js文件跳转到EntryPoint.OnModuleLoad()。
这看起来有些笨重。任何人都有更好的主意吗?
答案 0 :(得分:0)
所以我最终走了这条路并且工作正常。创建一个servlet,其doPost / doGet方法写出你的主机html并将参数传递给它。所以网址看起来像:
http://example.com/fb/mypage.html?foo=baz#place:foo=baz
然后您可以使用参数创建元标记等等:
// the first chunk of the static html
resp.getWriter().println("<html><head><script type=\"text/javascript\" language=\"javascript\" src=\"/myMoodule/myModule.nocache.js\"></script>");
// the dynamic meta tags
resp.getWriter().println("<meta property=\"og:title\" content=\"" + req.getParameter("foo") + "\" />");
// the rest of the static html
resp.getWriter().println("</head><body></body></html>");
然后,当您在类似fb的div上设置data-href属性时,请使用上面的url。也适用于SEO。生产系统的注意事项:
我仍然在调整这个但是在这一点上看不到任何掉落显示停止者。