我有点困惑,为什么在其他(所有)浏览器中可以工作,但在Firefox中无法工作。
初始化EventSource并注册监听器:
初始化EventSource并注册监听器:
var output = new EventSource('/subscribe');
output.addEventListener('shell_stream', function(e) {
$('#shell-output').append(e.data + "<br/>");
}, false);
当页面加载时,我查看查询字符串,如果有文件并运行操作,则通过ajax将它们发送到服务器,并且服务器将数据发送回上面注册的监听器。
已经对脚本进行了调试。 它确实发送请求并接收有效响应,而服务器肯定会向侦听器发送数据。
然而,在Firefox上,监听器没有任何反应。
值得注意的是,如果用户单击“运行”按钮,它将调用在查询字符串中找到文件和运行时调用的完全相同的函数,侦听器将完美地工作。
此外,如果我在页面加载时触发alert()
并且用户点击它,则侦听器将起作用!
这里是尝试各种浏览器的实时链接:
http://cibox.org/slivu/stackoverflow?file=extract-image.rb&run=true
谢谢。
alert('something');
并且用户点击它,流将在不点击“运行”按钮的情况下工作。这与用户交互有关,例如只有在用户以某种方式与页面交互后,流才会起作用。 - user904990alert()
就是其中之一)。你可以尝试通过在setTimeout中执行任何加载工作来测试这个理论... - Boris Zbarsky