小编Phr*_*ogz的帖子

在Webkit浏览器中错误地计算SVG高度

我有一个特定于Webkit浏览器的问题(Safari和Chrome,在Mac和PC上).

我正在使用Raphael JS渲染SVG数据并使用响应式布局来使用浏览器窗口缩放SVG.使用JQuery将SVG设置为100%宽度/高度.包含元素的宽度设置为百分比,以便在页面调整大小时保持布局的比率.

麻烦是Webkit没有正确计算高度,它在SVG图像周围增加了额外的像素(有时数百个); 这打破了布局.

如果您在Webkit浏览器中打开以下链接,您将看到绿色的额外像素区域.如果您在safari中使用开发人员inpspector,您将看到SVG的报告大小大于显示的SVG.

http://e-st.glam.ac.uk/simulationgames/svgheightbug/index.html

如果您在Firefox或Opera中打开链接,您将看到它应该工作的布局(这里的绿色是由我故意设置的边距引起的).

IE8有一个类似的问题,使用高度:自动修复,但这在Webkit中不起作用.

还有其他人有这个问题吗?有人有解决方案吗?

我认为它可能是一个Webkit错误(已经检查过夜间构建,问题仍然存在),但在我记录之前我想检查以确保没有其他人先解决问题.

css svg webkit

30
推荐指数
2
解决办法
4万
查看次数

在SVG中编写<path>数据(读取和修改)

有人真的可以帮助我吗?我一直在寻找为我的SVG运行脚本的方法.但我得到的所有东西都不匹配!并且它没有包含足够的信息,因为他使用了这组代码.例如,一个使用了event.target,另一个使用了event.getTarget(),另一个使用了event.target.firstchild.data.有人可以帮帮我吗?

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <path d="M150 0 L75 200 L225 200 Z" />
</svg>
Run Code Online (Sandbox Code Playgroud)

是svg路径的一个例子吗?我需要的是得到那些坐标,可能把它放在一个变量中,并用它作为另一个svg的坐标.那我该怎么做呢?另一件事是我如何通过在界面中输入数字来更改这些坐标.

所以我试图寻找答案,但就像我说的,我没有找到我需要的信息,或者我只是不知道它给我的信息.

javascript graphics svg scalable

28
推荐指数
2
解决办法
5万
查看次数

仅在从命令行调用脚本时运行代码

因此,当我从命令行调用我的脚本时,我希望它接受一个int并使用值执行某些操作:

ruby script.rb


puts ARGV[0], etc...
Run Code Online (Sandbox Code Playgroud)

但是,无论何时加载或需要脚本并且不从命令行调用脚本,我都想完全跳过这部分代码.如何检测脚本是通过命令行调用还是仅加载?谢谢!

ruby command-line

28
推荐指数
1
解决办法
7488
查看次数

获取元素的边界框来计算其变换

鉴于此SVG:

<svg xmlns="http://www.w3.org/2000/svg">
  <rect width="50" height="50"
        transform="translate(75,75) rotate(45) translate(-25,-25)" />
  <script>
    var bb = document.querySelector('rect').getBBox();
    console.log([bb.x,bb,y,bb.width,bb.height]);
  </script>
</svg>?
Run Code Online (Sandbox Code Playgroud)

结果输出是[0, 0, 50, 50].
期望的结果是[39.645,39.645,70.711,70.711].

可视版本:http://jsfiddle.net/2wpju/7/

计算元素的边界框相对于其父元素的最简单,最有效的方法是什么?


下面是我到目前为止提出的最佳答案,但有两个问题:

  1. 对于可以更好地处理的事情,似乎做了很多工作
  2. 本演示所示,它不一定是最小边界框(注意上圆),因为旋转的轴对齐边界框的轴对齐边界框总是会增加尺寸.

 

// Calculate the bounding box of an element with respect to its parent element
function transformedBoundingBox(el){
  var bb  = el.getBBox(),
      svg = el.ownerSVGElement,
      m   = el.getTransformToElement(el.parentNode);

  // Create an array of all four points for the original bounding box
  var pts = …
Run Code Online (Sandbox Code Playgroud)

javascript svg

28
推荐指数
1
解决办法
1万
查看次数

Sinatra中与动词无关的匹配

我们可以写

get '/foo' do
  ...
end
Run Code Online (Sandbox Code Playgroud)

post '/foo' do
  ...
end
Run Code Online (Sandbox Code Playgroud)

这很好.但是我可以在一个路由中组合多个HTTP动词吗?

ruby sinatra

27
推荐指数
3
解决办法
4852
查看次数

一行多个当地人?

考虑以下Lua代码:

local var1, var2;
Run Code Online (Sandbox Code Playgroud)

这是var2一个局部变量吗?或者只是var1当地人?

syntax lua

26
推荐指数
2
解决办法
6782
查看次数

解决IE8破坏的Object.defineProperty实现问题

使用ECMAScript5的Object.defineProperty功能考虑以下代码:

var sayHi = function(){ alert('hi'); };
var defineProperty = (typeof Object.defineProperty == 'function');
if (defineProperty) Object.defineProperty(Array.prototype,'sayHi',{value:sayHi});
else Array.prototype.sayHi = sayHi;
var a = [];
a.sayHi();
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome和Firefox 4(如果defineProperty存在),适用于Firefox 3.6(defineProperty不存在).但是,IE8 仅部分支持defineProperty.因此,它尝试运行该Object.defineProperty方法,但随后失败(浏览器中未显示错误)并停止在页面上运行所有其他JavaScript代码.

是否有更好的方法来检测和避免IE8的破坏实施:

if (defineProperty){
  try{ Object.defineProperty(Array.prototype,'sayHi',{value:sayHi}); }catch(e){};
}
if (!Array.prototype.sayHi) Array.prototype.sayHi = sayHi;
Run Code Online (Sandbox Code Playgroud)

对于好奇的人,我在我的ArraySetMath库中使用它来在那些支持它的浏览器中定义不可枚举的数组方法,并回退到旧浏览器的可枚举方法.

javascript internet-explorer-8 ecmascript-5

26
推荐指数
2
解决办法
2万
查看次数

为什么实例变量在块内部看似消失?

伙计们,请原谅我.对于Ruby来说,我充其量只是一个新手.我只是想知道对我来说看起来很奇怪的行为的解释.

我正在使用Savon库与我的Ruby应用程序中的SOAP服务进行交互.我注意到以下代码(在我编写的用于处理此交互的类中)似乎传递空值,我希望成员字段的值可以去:

create_session_response = client.request "createSession" do
  soap.body = {
    :user => @user, # This ends up being empty in the SOAP request,
    :pass => @pass  # as does this.
  }
end
Run Code Online (Sandbox Code Playgroud)

尽管这是一个事实,即@user@pass已初始化为非空字符串.

当我更改代码以使用本地代码时,它的工作方式与我期望的一样:

user = @user
pass = @pass

create_session_response = client.request "createSession" do
  soap.body = {
    :user => user, # Now this has the value I expect in the SOAP request,
    :pass => pass  # and this does …
Run Code Online (Sandbox Code Playgroud)

ruby block instance-variables savon

26
推荐指数
2
解决办法
6125
查看次数

Psych to_yaml选项的文档?

Ruby 1.9.3默认使用Psych for YAML.虽然它的红宝石DOC文档完全没有,我能发现暗示,一个外部件文档的indentation选项支持.测试证实了这一点:

irb(main):001:0> RUBY_VERSION
#=> "1.9.3"
irb(main):002:0> require 'yaml'
#=> true
irb(main):003:0> [[[1]]].to_yaml
#=> "---\n- - - 1\n"
irb(main):009:0> [[[1]]].to_yaml indentation:9
#=> "---\n-        -        - 1\n"
Run Code Online (Sandbox Code Playgroud)

可能支持更多选项.具体来说,我想知道如何更改换行宽度或完全禁用它.

有哪些选择?

ruby yaml psych

26
推荐指数
2
解决办法
5064
查看次数

让父类的方法访问子类的常量

例如:

class Animal

 def make_noise
    print NOISE
 end

end

class Dog < Animal
    NOISE = "bark"
end

d = Dog.new
d.make_noise # I want this to print "bark" 
Run Code Online (Sandbox Code Playgroud)

我如何完成上述工作?目前它说

uninitialized constant Animal::NOISE
Run Code Online (Sandbox Code Playgroud)

ruby constants

25
推荐指数
2
解决办法
7371
查看次数