我想在网站上添加一个“发推文”按钮。很简单,对吧?问题是该站点旨在运行在不特别处理弹出窗口的嵌入式平台上,因此我试图在页面内完成所有操作。
我能够成功地创建我的推文按钮,将一个 onClick 处理程序附加到它,并为相关内容构建一个正确的 twitter.com/share URL。当我使用 window.open 在新窗口中打开该 URL 时,一切正常。但是,如果我尝试在 iframe 中打开 URL,框架内不会加载任何内容。连载http://twitter.com进入 iframe 以同样的方式失败。然而,加载谷歌或任何其他网站似乎工作正常。
对我在这里缺少的东西有什么想法吗?谢谢! --扎克
编辑: 是的,他们在加载时检测 iframe 并清空页面:
if (window.top !== window.self) {
document.write = "";
window.top.location = window.self.location;
setTimeout(function(){ document.body.innerHTML='';},1);
window.self.onload=function(evt){document.body.innerHTML='';};
有什么合理的方法来解决这个问题,或者我是否坚持通过 oauth 编写自己的身份验证管道?我不需要他们的 API 中的任何东西,只需让用户向他们自己的帐户发送推文即可。
最佳答案
Twitter(如 Stack Overflow)可能正在使用一些 Javascript 来确保它们不会出现在 iFrame 中:
if(top!=self){
//hates you
}
我最近遇到了类似的事情,最终在没有 iFrame 元素的情况下重新制作了我的应用程序的一部分。
关于javascript - 在不打开新窗口的情况下创建推文按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431656/