gpt4 book ai didi

ajax - 为 "long polling"使用iframe不会导致浏览器闪烁

转载 作者:行者123 更新时间:2023-12-01 11:05:21 25 4
gpt4 key购买 nike

我需要检查命令是否已写入 txt 文件,以便更新我的网络浏览器中的 3D 窗口。这就是所谓的“推送” 技术或长轮询 来通知客户端。由于浏览器必须是 Internet Explorer,所以我有点受限。

我想出了一个解决方案,它使用一个隐藏的 iframe,调用一个每秒重新加载的 php 脚本来检查 txt 文件。

<iframe noresize scrolling="no" frameborder="0" name="loader" src="loader.php">  

loader.php 基本上是这样做的:

//check txt and get commands
<body onLoad="window.setInterval('location.reload()',1000);"></body>

我看到的唯一问题是网络浏览器中的重新加载按钮每秒都会闪烁。虽然窗口没有闪烁,只有按钮,但我还是觉得有点烦。

这个问题有没有更好的解决方案,而且还兼容IE?

最佳答案

最后,经过多次尝试,我设法让它工作,我认为这是最佳标准解决方案:长轮询 ajax 解决方案。由于这给 IE7 带来了很多问题,我将在下面粘贴我的代码。

首先是我的 PHP 文件,它读取一个 txt 并用文本回显一个 JSON。

<?php
$commandFile = fopen("./command.txt","r");

fseek($commandFile, 0);
$command = fscanf($commandFile, "%s\n"); //reads the command
fclose($commandFile);

if($command[0] != "")
{
$commandFile = fopen("./command.txt","w"); //delete first line
fclose(commandFile);
echo json_encode($command[0]);
}
?>

现在,HTML 主页需要一种机制来递归调用启动此 PHP 文件并检查答案的函数。我的功能是这样的。

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<script type="text/javascript">
function longPolling()
{
$.ajaxSetup({ cache: false }); //This line is THE KEY to work under Internet Explorer
$.ajax({
type: "GET",
url: "loader.php",
dataType: 'json',
async: true,

success: function(response){
if(response!=""){
sendCommand(response); //could be any other function
}
//longPolling();
setTimeout(longPolling,1000);
},
error: function(){
//longPolling();
setTimeout(longPolling,1000);
}

});
};

$(document).ready(function(){ /*waits till the whole page loads*/
longPolling(); /*start the initial request*/
});
</script>
</body>

关于ajax - 为 "long polling"使用iframe不会导致浏览器闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15613623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com