我有一些Javascript可以检测浏览器,并根据浏览器对元素应用转换。 Webkit适用于Chrome,但Firefox不适用。有人可以告诉我,如果我的代码是正确的:
if(typeof navigator.vendor.toLowerCase().indexOf('chrome')!=-1){
document.getElementById('jj_preview7').style.WebkitTransform = 'scale(' + jj_input23 + ') ' + 'rotate(' + jj_input24 + 'deg)' + 'translate(' + jj_input25 + 'px, ' + jj_input26 + 'px)' + 'skew(' + jj_input27 + 'deg, ' + jj_input28 + 'deg)';
}
if(typeof navigator.vendor.toLowerCase().indexOf('firefox')!=-1){
document.getElementById('jj_preview7').style.MozTransform = 'scale(' + jj_input23 + ') ' + 'rotate(' + jj_input24 + 'deg)' + 'translate(' + jj_input25 + 'px, ' + jj_input26 + 'px)' + 'skew(' + jj_input27 + 'deg, ' + jj_input28 + 'deg)';
}
提前致谢
答案 0 :(得分:2)
// Test element we apply both kinds of transforms to:
var testEl = document.createElement('div');
testEl.style.MozTransform = 'translate(100px) rotate(20deg)';
testEl.style.webkitTransform = 'translate(100px) rotate(20deg)';
var styleAttrLowercase = testEl.getAttribute('style').toLowerCase();
// when we check for existence of it in the style attribute;
// only valid ones will be there.
var hasMozTransform = styleAttrLowercase.indexOf('moz') !== -1;
var hasWebkitTransform = styleAttrLowercase.indexOf('webkit') !== -1;
这样做你现在可以做到:
var transformParts = [];
if (jj_input23 !== '') {
transformParts.push('scale(' + jj_input23 + ')');
}
if (jj_input23 !== '') {
transformParts.push('rotate(' + jj_input24 + 'deg)');
}
if (jj_input25 !== '' && jj_input26 !== '') {
transformParts.push('translate(' + jj_input25 + 'px, ' + jj_input26 + 'px)');
}
if (jj_input27 !== '' && jj_input28 !== '') {
transformParts.push('skewX(' + jj_input27 + 'deg) skewY(' + jj_input28 + 'deg)');
}
var transformTxt = transformParts.join(' ');
if (hasWebkitTransform) {
document.getElementById('jj_preview7').style.WebkitTransform = transformTxt;
}
if (hasMozTransform) {
document.getElementById('jj_preview7').style.MozTransform = transformTxt;
}
答案 1 :(得分:0)
以下是解决方案:http://jsfiddle.net/Adu49/1/
当您直接从输入中读取而不解析它时,您可能会生成类似于scale() translate(deg,deg)
的CSS声明,这显然是非法的。在这种情况下,Firefox更喜欢放弃它,而Chrome更喜欢接受部分正确的声明。这就是为什么你的代码不能在Firefox上运行,而是在Chrome上运行,填写完所有字段后,它最终会在两个浏览器上运行。
所以我在你的代码中加了一些value || default
,这样可以保证输入框为空时设置正确的默认值(如果你想与用户交互,你需要更多验证代码。)
这里有一些偏离主题的话题。请更改命名变量和元素的方式,这太混乱了。