所以我有一个直接放在体内的元素:
<body>
<div id="header">Some stuff...</div>
Other stuff...
</body>
Run Code Online (Sandbox Code Playgroud)
以下是使用的CSS:
body{
text-align:center;
}
#header{
margin:auto;
}
Run Code Online (Sandbox Code Playgroud)
因此#header div设置为100%宽度(默认值)并居中.问题是,窗口边框和#header元素之间有一个"空格"...喜欢:
| |----header----| |
^window border ^window border
Run Code Online (Sandbox Code Playgroud)
我尝试用javascript调整它,它成功地将元素大小调整到确切的窗口宽度,但它并没有消除"空间":
$('#header').width($(window).width());
Run Code Online (Sandbox Code Playgroud)
一个解决方案似乎是添加以下CSS规则(并保持上面的javascript):
#header{
margin:auto;
position:relative;
top:-8px;
left:-8px;
}
Run Code Online (Sandbox Code Playgroud)
在我的浏览器中,这个"空间"是8px - 但我不确定在所有浏览器中是否相同?我在Ubuntu上使用Firefox ...
那么摆脱这个空间的正确方法是什么 - 如果它是我上面使用的,那么所有的浏览器都是一样的吗?
我经常需要通过ajax加载其他javascript文件,所以在开始时我使用jQuery提供的标准函数来加载脚本:
$.getScript('script_name.js',callback_function());
Run Code Online (Sandbox Code Playgroud)
但这没有用,因为$ .getScript是异步的($ .ajax的jQuery API默认情况下'async'设置为true;主题在$ .getScript的API注释中讨论:http:/ /api.jquery.com/jQuery.getScript/).所以我写了这个函数,由上面链接的API页面的评论中的某人提供:
load:function(script,callback){
jQuery.ajax({
async:false,
type:'GET',
url:script,
data:null,
success:callback,
dataType:'script'
});
},
Run Code Online (Sandbox Code Playgroud)
这似乎运作良好,所以我继续,但我最近注意到,这只适用于同一目录中的脚本,例如.调用myObj.load('test.js')效果很好,但调用myObj.load('test/test.js')根本不起作用.
感觉我错过了一些明显的东西,但我没有设法找到问题.任何的想法?
好吧,我正在尝试用一个SocketServer构建一个小的python prgram,它应该将它收到的消息发送给所有连接的客户端.我卡住了,我不知道如何在服务器端存储客户端,我不知道如何发送给多个客户端.哦,我的程序每次超过1个客户端连接失败,每次客户端发送多个消息...
这是我的代码,直到现在:
print str(self.client_address[0])+' connected.'
def handle(self):
new=1
for client in clients:
if client==self.request:
new=0
if new==1:
clients.append(self.request)
for client in clients:
data=self.request.recv(1024)
client.send(data)
class Host:
def __init__(self):
self.address = ('localhost', 0)
self.server = SocketServer.TCPServer(self.address, EchoRequestHandler)
ip, port = self.server.server_address
self.t = threading.Thread(target=self.server.serve_forever)
self.t.setDaemon(True)
self.t.start()
print ''
print 'Hosted with IP: '+ip+' and port: '+str(port)+'. Clients can now connect.'
print ''
def close(self):
self.server.socket.close()
class Client:
name=''
ip=''
port=0
def __init__(self,ip,port,name):
self.name=name
self.hostIp=ip
self.hostPort=port
self.s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.connect((self.hostIp, self.hostPort))
def …Run Code Online (Sandbox Code Playgroud) 根据维基百科,调车场算法用于解析数学表达式。但有什么理由不能将它与逻辑和算术表达式以及比较混合使用吗?
举个例子,可以用它来解析这个:
a+b<17 && a+b>3 || a==b
Run Code Online (Sandbox Code Playgroud)
据我所知,您可以将逻辑运算符定义为具有最低优先级,然后是比较运算符,然后使用优先级递增的常用算术运算符。或者我错过了什么?
algorithm parsing expression operator-precedence shunting-yard
所以,我有两个对象,a和b.现在,我想将b的一个方法传递给一个对象,它应该存储它.我们称之为b.met:
b.met=function(){
alert(this.txt);
}
Run Code Online (Sandbox Code Playgroud)
现在,我想从a调用b.met.以下代码不起作用,因为a.met是a.范围内的b.met的克隆:
a.met=b.met;
a.met(); //Executes in the 'a' scope!
Run Code Online (Sandbox Code Playgroud)
到目前为止,我找到的唯一方法是将方法的名称保存在字符串中并在eval语句中使用它:
a.toCall='b.met';
eval(a.toCall+'();');
Run Code Online (Sandbox Code Playgroud)
既然每个人都说你应该避免使用eval ...还有其他可能性吗?
编辑 - 参见评论:所以我改变了我的代码:
a:{
processes:[],
spawnProcess:function(type,id,closeFn){
var closeFn=closeFn || 'function(){}';
this.processes.push({type:type,id:id,closeFn:closeFn});
}
Run Code Online (Sandbox Code Playgroud)
至:
a:{
processes:[],
spawnProcess:function(type,id,closeFn){
var closeFn=function(){closeFn()} || 'function(){}';
this.processes.push({type:type,id:id,closeFn:function(){closeFn()}});
}
Run Code Online (Sandbox Code Playgroud)
执行以下代码时,我收到过多的递归错误:
a.spawnProcess('','',b.met);
a.processes[0].closeFn();
Run Code Online (Sandbox Code Playgroud) javascript ×2
ajax ×1
algorithm ×1
css ×1
eval ×1
expression ×1
html ×1
jquery ×1
methods ×1
networking ×1
object ×1
padding ×1
parsing ×1
position ×1
python ×1
python-2.7 ×1
reference ×1
sockets ×1
socketserver ×1
width ×1