我试图在JavaScript中进行定位.我正在使用基于经典quirksmode函数的累积位置函数,该函数对每个函数求和offsetTop,直到顶部节点.offsetLeftoffsetParent
但是,我遇到了一个问题,我感兴趣的元素offsetParent在Firefox 中没有.在IE中offsetParent存在,但是offsetTop并且offsetLeft总计为0,因此它与Firefox中的效果相同.
什么会导致在屏幕上清晰可见和可用的元素没有offsetParent?或者,更实际的是,我如何找到该元素的位置以便在其下方放置下拉?
编辑:这是如何重现这个特定的一个实例(没有通过当前接受的答案解决):
在Web浏览器的控制台中运行以下代码(例如Chromev21):
var e = document.querySelector('div');
console.log(e);
// <div id="notify-container"></div>
do{
var s = getComputedStyle(e);
console.log(e.tagName,s.display,s.visibility,s.position,e.offsetParent);
} while(e=e.parentElement)
// DIV block visible fixed null
// BODY block visible static null
// HTML block visible static null
Run Code Online (Sandbox Code Playgroud)为什么offsetParent那个元素null?
我正在尝试动画一个圆圈,只是水平移动它,工作正常.然而,当圆圈移动时,我必须对该圆圈执行clearRect,以便在水平方向上重新绘制它.当我做一个clearRect时,它也会使背景周围有白框,这样它就会在圆圈移动的方向上成为一条白色的水平线.
还有其他解决方法吗?
function drawcircle() {
clear();
context.beginPath();
context.arc(X, Y, R, 0, 2*Math.PI, false);
context.moveTo(X,Y);
context.lineWidth = 0.3;
context.strokeStyle = "#999999";
context.stroke();
if (X > 200)
{
clearTimeout(t); //stop
}
else
{
//move in x dir
X += dX;
t = setTimeout(drawcircle, 50);
}
}
function clear() {
context.clearRect(X-R, Y-R, 2*R, 2*R);
}
Run Code Online (Sandbox Code Playgroud) 我有一个~1200个ruby对象的数组,我想循环遍历它们并删除名称中包含单词或部分单词的对象.
所以我尝试了这个:
list.each do |item|
if item.name =~ /cat|dog|rat/i
puts item.name
list.delete(item)
end
end
Run Code Online (Sandbox Code Playgroud)
它的工作原理,除了它似乎错过了一些名称应该匹配的项目.如果我再次运行它会发现更多,如果我再次运行它会发现更多.它每次都找不到,但我必须运行它3次才能删除所有内容.
世界上为什么会发生这种情况?
首先 - 对问题的简短描述.我编写了一个JavaScript函数来将一些文本标签放在SVG画布中.这里是:
function set_label(x,y,title)
{
var newTitle = document.createElementNS(svgNS,"text");
newTitle.setAttributeNS(null,"x",x);
newTitle.setAttributeNS(null,"y",y);
newTitle.setAttributeNS(null,"font-size","17px");
newTitle.setAttributeNS(null,"font-family","WinGreek");
var textNode = document.createTextNode(title);
newTitle.appendChild(textNode);
document.getElementById("viewport").appendChild(newTitle);
}
Run Code Online (Sandbox Code Playgroud)
由于我的项目积分,我必须使用希腊字体.所以,我称之为功能:
set_label (10,50,'Qitos')
Run Code Online (Sandbox Code Playgroud)
这将显示Ktitos标签 - 没问题.
但是 - 当我尝试这样打电话时:
set_label (10,50,'QamÚraj')
Run Code Online (Sandbox Code Playgroud)
甚至更糟:
set_label (10,50,'Θαρσανδαλα')
Run Code Online (Sandbox Code Playgroud)
这必须显示Θαρσανδαλα标题形成全部来自特殊字符 - 问题累积 - utf-8符号出现像我写它 - 与代码:(
这里在其他类似的问题的一些研究,我发现,如果我转换UTF-8码ESC序列,如\ U00B0 - 这必须解决这个问题,但是... - 我无法弄清楚它是如何做到这一点, - 如何如果特殊字符在字符串的中间 - 就像第二个例子那样做
如何转换此ERB代码:
<div <%= 'class="highlight"' if job.done %>>
Run Code Online (Sandbox Code Playgroud)
进入Haml代码?
我有一个Ruby脚本,可以完成一些长期的工作.它只是命令行,我想表明脚本仍在运行而不是停止.我以前喜欢所谓的"旋转光标",我设法在Windows下用Ruby重现它.
问题:这在其他操作系统中有效吗?如果没有,是否有与操作系统无关的方法来实现这一目标?
请不要IRB解决方案.
10.times {
print "/"
sleep(0.1)
print "\b"
print "-"
sleep(0.1)
print "\b"
print "\\"
sleep(0.1)
print "\b"
print "|"
sleep(0.1)
print "\b"
}
Run Code Online (Sandbox Code Playgroud) 有没有办法使用em作为SVG翻译的单位?如在
<rect height="10em" width="10em" transform="translate(0em, 10em)"
style="fill:none;stroke-width:3;stroke:black/>
Run Code Online (Sandbox Code Playgroud)
除非我将em作为单位删除,否则矩形不会在Firefox中翻译.
有没有人知道JSPath转换器的xPath?我从Chrome获得以下xPath:
//*[@id="docs"]/div[1]/h4/a
Run Code Online (Sandbox Code Playgroud)
并希望将其更改为Jsoup查询.该路径包含我想要引用的href.
我的公司有一个程序,它在运行时嵌入了Lua,.lua从磁盘加载文件并重复执行在其中定义的函数.
有没有办法附加到正在运行的进程并在我的.lua文件中设置断点?(我接受gdb风格的命令行调试作为Lua发行版的一部分,或者接受提供类似Visual-Studio的GUI断点的第三方IDE.)
或者,鉴于运行时加载来自磁盘的随机文件的性质,我要求的是完全荒谬和不可能的?
编辑:看起来它并不荒谬,因为Lua自己的debug.getinfo()函数可以确定给定函数的源文件,并debug.sethook()允许对输入的每个新代码行进行回调.因此,从磁盘加载源代码并且能够告诉解释器何时从该文件执行特定代码行是合理的.问题仍然存在:如何锁定具有Lua解释器的现有进程并注入我自己的跟踪功能(然后可以查看文件/行号对并暂停执行)?