Soundcloud Javascript API - Connect window.opener.setTimeout
Soundcloud Javascript API - Connect window.opener.setTimeout() not working
我遵循了连接到其开发站点上的SC API的简单示例。我已经设法让所有内容在我的本地服务器上正常工作,但现在我已将其推送到我的网站,它似乎无法正常工作。
弹出"连接到应用程序"窗口。我单击连接。它显示了我的"redirect_url"页面,其中包含:
<body onload="window.opener.setTimeout(window.opener.SC.connectCallback, 1)">
但似乎从未被解雇过。
我在这里发现了一个 2 年前关于这个问题的 SO 问题:Javascript SDK connect(( 函数在 chrome 中不起作用
顶部答案是,如果您有SC Chrome应用程序并尝试侦听"存储事件"作为解决方法,则尝试执行此操作存在问题。
我的问题是我没有在 chrome 上安装 SC 应用程序,也从来没有。另外,这在我的本地服务器上完美运行似乎很奇怪。
谁能想到如何将代码移动到我的虚拟主机会杀死它?一些托管公司是否出于某种原因阻止window.opener.setTimeout((?
提前感谢您的帮助。
经过几个小时的无望调试后,想通了这一点。
将回调拉取到脚本标记中,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Connect with SoundCloud</title>
</head>
<body>
<b style="text-align: center;">This popup should automatically close in a few seconds</b>
<script type="text/javascript">
window.opener.SC.connectCallback.call(this);
</script>
</body>
</html>
这有点奇怪,因为该函数期望在window
上调用,而不是SC
,因此调用call()
。
另一部分是this
需要引用弹出窗口的window
对象,因为这是具有window.location.search
集的对象。网址如下所示:
http://localhost:8080/callback.html?code=<CODE>&state=SoundCloud_Dialog_ca4d6#access_token=<ACCESS TOKEN>&scope=non-expiring
如果你看window.opener.SC.connectCallback
,它看起来像这样:
function (){r.notifyDialog(this.location)}
因此,该this
必须是弹出窗口,而不是原始父窗口。
如果将 connectCallback
函数传递到父窗口的 setTimeout
中,则会调用它,并将this
设置为父窗口的 window
对象,该对象没有window.location.search
查询参数(身份验证令牌(。
希望这是有道理的。至少,它应该解决你的问题。
另外,如果您坚持使用 body onload 属性,您可以将其更改为以下内容:
<body onload="setTimeout(window.opener.SC.connectCallback)">
- window.opener.document在ie中不起作用
- 通过window.opener将弹出窗口中的值传递给父窗口
- 检测window.opener窗口刷新事件
- Form.target=window.opener.name不起作用
- window.opener not working in chrome & IE
- 跨原点-弹出窗口(window.opener为空)
- window.opener引用在Java 1.7.0_04-b20中从Applet重定向期间发生了更改,但在1.7.0_
- window.opener调用函数给了我一个文档.getElementById(..)为null
- Window.opener 未定义在 IE8 中
- window.opener.dispatchEvent 不会在 Firefox 中传输附加的数据
- 为什么
- 受信任站点 WinXP IE 8 的错误“window.opener.top 为空或不是对象”
- 如何允许 Window.opener.location.href 权限 对于 Greasemonkey
- 无法将值从 window.opener 传递到其父级
- Soundcloud Javascript API - Connect window.opener.setTimeout
- Javascript :使用window.opener表单弹出窗口将字符串添加到iframe
- 这里有一种新型的广告javascript通过change"window.opener.location”;,我
- window.opener is null in firefox
- 我该如何检查我是否可以访问window.opener
- window.opener.close() is not working