我目前在静态html页面上使用javascript和XMLHttpRequest来创建Zotero中的记录视图。这很好用,除了一件事:页面标题。
我当然也可以更改<title>...</title>
标记,但如果有人想将视图发布到例如Facebook,则会在网页上显示静态标题。
我无法用任何方式来解决这个问题只需使用javascript的静态页面。我相信我需要一个动态创建的页面来自服务器,它执行与XMLHttpRequest类似的东西。
对于PHP,有HTTPRequest。现在来问题了。在javascript版本中,我可以使用异步调用。使用PHP我认为我需要同步调用。这有点担心吗?
是否有其他方法可以处理这个我不知道的事情?
更新:看起来那些试图回答的人根本不熟悉Zotero。我应该更清楚。 Zotero是位于http://zotero.org/的参考数据库。它有一个可以通过XMLHttpRequest使用的API(这就是我上面所说的)。
现在我不能在我上面描述的场景中使用它。所以我想从我的服务器调用Zotero服务器。 (通过PHP或其他东西。)
(如果您不熟悉这些概念,可能很难理解并回答这个问题。当然。)
更新2:对于那些对Facebook如何删除您发布的网址感兴趣的人,请在此处测试:https://developers.facebook.com/tools/debug
通过测试可以看出,没有运行javascript。
答案 0 :(得分:1)
很抱歉,我不确定我是否理解您要问的内容,您是否只想更改网页标题?
为什么不使用javascript?
document.title = newTitle
答案 1 :(得分:1)
Facebook希望在获取页面时出现标题(或opengraph:title标签)。它不会为你填写空白而使用任何JavaScript。
一个很酷的解决方法是通过解析用户代理字符串来检测Facebook刮刀,并使用PHP而不是JavaScript填充的信息提供页面版本。
据我所知,Facebook刮刀将此标题用于用户代理:"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
您可以检查标题中是否存在该字符串的一部分并相应地加载页面。
if (strpos($_SERVER['HTTP_USER_AGENT'], 'facebookexternalhit') !== false)
{
//synchronously load the title and opengraph tags here.
}
else
{
//load the page normally
}