如何监听另一个页面上发生的动作?

Posted

技术标签:

【中文标题】如何监听另一个页面上发生的动作?【英文标题】:How to listen for an action that happens on another page? 【发布时间】:2016-06-12 15:06:46 【问题描述】:

不确定我的“条款”是否正确,因为我是新手。

页面 A: 显示新提交问题的页面。

页面 B: 用户可以提交新问题的页面。

当新提交的问题已在页面 B 上提交时,我如何让页面 A“听”或“知道”,以便页面 A 刷新问题。

其次:我必须让服务器参与进来吗?我能以某种方式监听客户端事件吗?

我只能使用 Angular JS 和 JQuery 库。

【问题讨论】:

使用socket.io之类的东西并广播它。 我无法使用其他人制作的其他库。 您需要使用 web sockets 或 ajax 与服务器通信 在给定时间刷新 B 页面? Ajax 请求? 我没有得到反对票?这是针对我的项目的,所以我显然不能付钱给某人...@JorelAmthor,当您说在给定时间刷新时,您的意思是每X分钟刷新一次?这不是我想要做的,或者这是你可以在客户端做的方式? 【参考方案1】:

页面 A:

<a id="sendData">Send Data to Page B </a>

var url = http://localhost/yoursite/writeToFile.php
$('a#sendData').click(
               $.ajax( url: url, type: "POST", data:test:'test' )
                .done(function() 
                      $(this).append(' sent!');
               );
);

页面 B:

<div>Listening to Page A </div>

window.setInterval(function()
 listenToPage1();
, 5000);

 function listenToPage1()

    var url = http://localhost/yoursite/readFromFile.php
    $.get(url, function(data)  $('div').html(data);   );

writeToFile.php

<?php
   $fp = fopen('data.txt', 'a');
   fwrite($fp, $_POST);
   fclose($fp);
?>

readFromFile.php

<?php 
   readfile('data.txt');
?>

假设您使用的是 PHP。否则,您必须将这些脚本转换为您的后端语言。

您的网站结构

www/
  /yousite
   readFromFile.php
   writeToFile.php
   page1.php
   page2.php
   data.txt

【讨论】:

以上是关于如何监听另一个页面上发生的动作?的主要内容,如果未能解决你的问题,请参考以下文章

如何等待从另一家商店在一家商店发生的调度

Java:使用动作监听器在该类的对象上调用另一个类中的函数

Servlet监听器笔记总结

监听器

如何在Angular项目里监听页面关闭、跳转事件?

如何从不同的动作监听器调用同一个线程