当另一个声音云窗口或标签正在播放时,soundcloud如何停止当前播放的声音?
我正在寻找一种方法将事件从标签/窗口发送到另一个标签/窗口,而不使用子窗口设计。
我尝试使用自定义Cookie事件,但它不会影响其他标签。
答案 0 :(得分:7)
您是否知道localStorage会触发事件?更具体地说,只要在另一个浏览上下文中添加,修改或删除项目,它就会触发事件。实际上,这意味着无论何时在任何给定标签中触摸
localStorage
,所有其他标签都可以通过监听storage
对象上的window
事件来了解它,如下所示:window.addEventListener('storage', function(e){ console.log(event.key, event.newValue); });
每当标签修改
localStorage
中的内容时,每个其他标签都会触发一个事件。这意味着我们只需在localStorage
上设置值即可跨浏览器标签进行通信。
请参阅那篇提供可能对您有用的API的文章作者的local-storage模块:
ls.on(key, fn(value, old, url))
ls.off(key, fn)
答案 1 :(得分:0)
不确定您是否在寻找这个?服务器已发送事件。
http://www.w3schools.com/htmL/html5_serversentevents.asp
<script>
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
</script>
对于任何对老派感兴趣的人,通过孩子/父母访问一个窗口,都有这个例子。在您的父页面中,启动子页面,并保留myWindow
引用。这允许您访问子窗口的整个DOM。然后你可以控制child =&gt;父母或父母=&gt;取决于你想控制的东西。
<script>
var myWindow = window.open("", "MsgWindow", "width=200, height=100");
// Or if you already have a webpage:
// var myWindow = window.open("MyWebpage.html", "MsgWindow", "width=200, height=100");
myWindow.document.write("<script>var test = 10;</s"+ "cript>");
myWindow.document.write("<p>This window's name is: " + myWindow.name + "</p>");
alert(myWindow.test); // displays 10, stored in the other window.
myWindow.close("MsgWindow");
</script>