我目前正在进行一项使用Server-Sent Events接收消息的聊天.但是,我遇到了一个问题.服务器发送的事件从未连接并保持挂起状态,因为页面未加载.
例如:
<?php
while(true) {
echo "data: This is the message.";
sleep(3);
ob_flush();
flush();
}
?>
Run Code Online (Sandbox Code Playgroud)
我希望每隔3秒,"数据:这就是消息." 将被输出.相反,页面只是不加载.但是,对于服务器发送的事件,我需要这种行为.有没有办法来解决这个问题?
编辑:
完整代码:
<?php
session_start();
require "connect.php";
require "user.php";
session_write_close();
echo $data["number"];
header("Content-Type: text/event-stream\n\n");
header('Cache-Control: no-cache');
set_time_limit(1200);
$store = new StdClass(); // STORE LATEST MESSAGES TO COMPARE TO NEW ONES
$ms = 200; // REFRESH TIMING (in ms)
$go = true; // MESSAGE CHANGED
function formateNumber ($n) {
$areaCode = substr($n, 0, 3);
$part1 = substr($n, 3, 3);
$part2 = substr($n, 6, …
Run Code Online (Sandbox Code Playgroud) 有没有人知道如何制作查找和替换的东西,当你只需点击下一步它会带你到下一个找到的项目?
编辑:
对于Textarea.我想要一个可以向Textarea添加查找和替换的Javascript代码.我不想只是用.
搜索()
或替换().
在片刻我试试这个:
function allIndexes() {
var indices = new Array();
var index = 0;
var i = 0;
while(index = $('#text').val().indexOf($('#search').val(), index) > 0) {
indices[i] = index;
i++;
}
return indices;
}
Run Code Online (Sandbox Code Playgroud)
但这根本不起作用.
我正在尝试检测鼠标移动的距离(以像素为单位).我目前正在使用:
$(document).mousemove(function(event) {
var startingTop = 10,
startingLeft = 22,
math = Math.abs(((startingTop - event.clientY) + (startingLeft - event.clientX)) + 14) + 'px';
$('span').text('From your starting point(22x10) you moved: ' + math);
});
Run Code Online (Sandbox Code Playgroud)
但是,我觉得这不是正确的方法,或者是这样吗?它与我不一致.
以下是它现在如何工作的演示:http://jsfiddle.net/Em4Xu/1/
我实际上正在开发一个拖放插件,我想创建一个名为的distance
函数,就像draggable一样,你需要在拖动它之前拉动鼠标一定数量的像素.我不是100%确定如何做到这一点,所以首先我需要获取鼠标从startingTop和startingLeft位置移动的像素.
有没有人有什么建议?
现在我试图找到一种方法来检测元素HTML何时发生了变化.
我正在尝试:
var a, b;
setInterval(function() {
a = $('#chat').text();
}, 150);
setInterval(function() {
b = $('#chat').text();
if (a !== b) {
alert("There has been a new message.");
}
}, 200);?
Run Code Online (Sandbox Code Playgroud)
我做的是每隔150毫秒我检查一次#chat的HTML然后每隔200秒我再次检查HTML,然后检查变量a
是否等于变量b
它们将来我会这样做但是现在我只是提醒一些事情
你可以在这里看到它:http://jsfiddle.net/MT47W/
显然这种方式不起作用,根本不是很准确.有没有更好的/不同的做/实现这个?
感谢您的帮助,我一直在努力弄清楚如何做到这一点好一周,但我找不到解决方案,我希望我把这个问题发布在正确的地方,并且在合适的时间.
我正在创建一个拖放插件,我想让它有点独特我会添加一个cookie功能来保存拖动元素的位置.
我目前正在使用以下代码来获取和设置cookie:
$.setCookie = function(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
$.getCookie = function(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
} …
Run Code Online (Sandbox Code Playgroud) 我已经看到了一些选择日期范围的jQuery滑块的好例子:http://ghusse.github.com/jQRangeSlider/stable/demo/
时间范围:http://marcneuwirth.com/blog/2011/05/22/revisiting-the-jquery-ui-time-slider/
但我正在寻找能够选择日期,月,日分钟的东西.能够将它作为日期范围选择器和普通滑块都很棒.
有没有人见过这样的实现?使用Unix时间作为我的值的正常jQuery UI滑块是否有意义?
我正在建立一个聊天只是为了好玩.我从来没有这样做,而我却在总体上试用EventSource API (Server-Sent Events)
的JavaScript
.我刚刚听说它大约3天前,我觉得它比设置一个有趣且容易得多WebSocket
.
我知道长时间的民意调查耗费了大量资源.但是,由于我从未听说过EventSource,它如何影响服务器?它是否耗尽了相同数量的资源?
我注意到,在Networks Tab
的Google Chrome Developers Tool
,该EventSource的不创建一个具有较大规模的内容(超过时间)的请求.拥有大量内容的1个请求会更好吗?
我的聊天目前正在运行两个EventSource.一个用于聊天本身(每次运行2500ms
)和聊天中的"正在输入..."机制(每次运行250ms
).
在大约一分钟的聊天之后,两个请求的组合内容大小是关于的150kb
.这将增加更多的消息.
我担心我的主人会暂停我的帐户.这是我的一个朋友发生的事情,他使用了民意调查或长期民意调查(我忘了).我不确定EventSource是否使用尽可能多的资源作为轮询或长轮询.
昨晚,我真的很无聊,我想到了一个小小的脚本.基本上我在考虑PHP与JavaScript相比有多少内置函数,然后我意识到我真的不知道JavaScript实际上有多少函数.我想过编写一个脚本来查看窗口对象,包括对象内的每个对象,等等.我编写了脚本并且它有效(在较小的对象上尝试过).
但是,我的问题是JavaScript不会让我循环整个windows对象.
我试过了:
for (var key in window) {
console.log(key);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
var a = Object.create(window);
for (var key in a) {
console.log(key);
}
Run Code Online (Sandbox Code Playgroud)
两段代码都给了我:
top
window
location
external
chrome
Intl
v8Intl
document
script1374438467163
$pick
$try
IFrame
Elements
OverText
IframeShim
Mask
Clientcide
dbug
value
debugCookie
StyleWriter
StickyWin
TabSwapper
Collapsible
Collapsable
Drag
Cookie
Accordion
Asset
Spinner
MultipleOpenAccordion
MooTools
typeOf
instanceOf
Type
Hash
Native
$A
$arguments
$chk
$clear
$defined
$each
$empty
$extend
$H
$merge
$lambda
$mixin
$random
$splat
$time
$type
$unlink
Browser …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个真正的查找/替换系统,但其中一个主要功能不起作用.
应该发生什么:
一旦搜索到所有找到的单词,将在页面上突出显示.我想要它所以你可以点击它然后打开一个Div说:用{INPUT}替换{WORD HERE}然后你可以点击替换它将用输入中的文本替换该单词.
我正在使用findAndReplace插件,我不想改变它.
什么不会工作:
单击该单词后,该框将打开,但我不知道如何使找到的文本替换为输入中的文本.我的一些代码是一行格式,因为我有:
return 'Code Here';
Run Code Online (Sandbox Code Playgroud)
我的Javascript:
shortcut.add("Ctrl+F", function() {
$('#finder').animate({
'bottom': '-53px'
}, 100);
});
shortcut.add("Shift+F", function() {
$('#finder').animate({
'bottom': '0px'
}, 100);
});
shortcut.add("Ctrl+C", function() {
$('#finder').animate({
'bottom': '-150px'
}, 100);
});
function findAndReplace(searchText, replacement, searchNode) {
if (!searchText || typeof replacement == '') {
$('.r').css({
'background': 'white',
'color': 'black'
});
return;
}
if (!searchText || typeof replacement === 'undefined') {
alert('No Items Found');
$('.r').css({
'background': 'white',
'color': 'black'
});
return;
}
var regex …
Run Code Online (Sandbox Code Playgroud) 我是那种喜欢做很多项目的人,特别是如果它只涉及JavaScript,因为这是我的强项.
我想到了一个有趣的想法.用JavaScript编写一小块CSS.然后可以在Blob中使用这些CSS片段或以其他方式实现到网页中.
Most of the time, I do projects just for FUN and for build up in experience.
让我们更多地了解我们正在使用的工作.其中一个JavaScript样式表可能如下所示:
var sheet = {
"h1": {
"font-size": "24px",
"color": "blue",
children: {
"a": {
"font-size": "15px"
}
}
},
"a": {
color: "red"
}
};
Run Code Online (Sandbox Code Playgroud)
这将返回:
h1{font-size:24px;color:blue}h1 a{font-size:15px}a{color:red}
注意元素中的children
属性h1
.
这是我的筑巢方式,制作了h1 a
.
然而我的问题是,我怎么能连续筑巢,所以我最终会得到类似的东西:
"h1 div span a"
这意味着每个嵌套的子级都需要能够使用该children
属性.
我到目前为止的脚本在下面(属于变量sheet
).
var to = "";
for (var el in sheet) {
var props = …
Run Code Online (Sandbox Code Playgroud)