Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery在firefox中获得background-position-y?_Javascript_Jquery_Css_Firefox - Fatal编程技术网

Javascript 如何使用jQuery在firefox中获得background-position-y?

Javascript 如何使用jQuery在firefox中获得background-position-y?,javascript,jquery,css,firefox,Javascript,Jquery,Css,Firefox,它可以在chrome、ie和safari上运行,但不能在Firefox(我相信也不能在Opera上运行)。您可能认为jQuery会有一个polyfill,但从1.5开始就没有了。如何轻松获取背景动画(例如视差)的背景Y位置 编辑:您需要背景位置-[x,y]支持。(使用“投票”功能,而不是评论,除非你有先见之明要添加)。该漏洞自2010年(至今已有3年)起就一直存在,所以不要屏息以待修复。:) 以下是我的黑客解决方案: var backgroundPos = $(elem).css('backgr

它可以在chrome、ie和safari上运行,但不能在Firefox(我相信也不能在Opera上运行)。您可能认为jQuery会有一个polyfill,但从1.5开始就没有了。如何轻松获取背景动画(例如视差)的背景Y位置


编辑:您需要
背景位置-[x,y]
支持。(使用“投票”功能,而不是评论,除非你有先见之明要添加)。该漏洞自2010年(至今已有3年)起就一直存在,所以不要屏息以待修复。:)

以下是我的黑客解决方案:

var backgroundPos = $(elem).css('backgroundPosition').split(" ");
//now contains an array like ["0%", "50px"]

var xPos = backgroundPos[0],
    yPos = backgroundPos[1];

这里的
y
是一个数字,根据您的情况,它可以是百分比或像素偏移量。我做了一个小正则表达式来去掉非数字字符,这样你就可以把数字作为javascript数字了。

不幸的是,一些浏览器(比如Chrome)报告
css(“背景位置”)
或者
css(“背景位置”)
作为
左上方的
,而其他浏览器(Internet Explorer、Firefox、Opera)将其报告为
。以下几点对我很有用:

var $jQueryObject = jQuery('#jQueryObject');
var backgroundPosition = $jQueryObject.css('background-position');
// backgroundPosition = "0% 0%" for example
var displacement = backgroundPosition.split(' '); // ["0%", "0%"]
var y = Number(displacement[1].replace(/[^0-9-]/g, ''));

// As suggested, you could also get the float:
var yFloat = parseFloat(displacement[1].replace(/[^0-9-]/g, ''));

根据红杉麦克道尔的答案,你也可以这样做

var x, y, pos = $(elem).css('background-position').split(' ');

if(pos[0] === 'left') {
  x = pos[1];
  y = pos[3];
} else {
  x = pos[0];
  y = pos[1];     
}

我已经读到,如果你自己想知道一些事情并想与他人分享,你应该这样发帖,我希望这是犹太教的!如果我在这里不正确,请删除。打败我,哇。我必须做一些实验来确保它能正常工作。好了,已经过了几个星期,没有更好的答案了。尽管感觉有点脏,我还是要接受我自己的答案。我打败你是因为我作弊p我在发布问题之前就知道答案了。有一个很好的赢得选票!我可以推荐parseFloat()从字符串中提取数字吗?它比正则表达式要整洁一点,因为数字并不总是理想的:var x=Number(1);与var x=1不完全相同;可以改为执行变量y=+(置换[1]。替换(/[^0-9/g');。替换(/[^0-9-]/g'))将把23.34534%转换为2334534。我确信这不是预期的行为。将“.”添加到表达式中。立即替换(/[^0-9-,]/g'))23.34534%将为23.34534%
var x, y, pos = $(elem).css('background-position').split(' ');

if(pos[0] === 'left') {
  x = pos[1];
  y = pos[3];
} else {
  x = pos[0];
  y = pos[1];     
}
var yPos = $(elem).css('backgroundPositionY');