2011-06-10 23 views
-1

我不能讀一個CSS3的變換旋轉值:Opera和Firefox無法讀取CSS3旋轉值

  • 歌劇9.62在IE
  • 歌劇10.51
  • 火狐4.01

工作正常, Chrome和Safari,但不在以上三者中。 這裏是源:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="jquery-1.6.1.min.js"></script> 
    <style> 
     div { 
      -webkit-transform:  rotate(-5deg); 
      -moz-transform:  rotate(-5deg); 
      -o-transform:  rotate(-5deg); 
      -ms-transform:  rotate(-5deg); 
      transform:   rotate(-5deg); 
      border: 1px solid black; 
     } 
    </style> 
    <script type="text/javascript"> 
     $(document).ready(function() { 

      // tries to read the CSS rotate data 
      // starts by reading -webkit-transform, if it 
      // fails then read -moz-transform and so on 
      var getRotation = function ($e) { 
       var value = $e.css('-webkit-transform'); 
       if (value === undefined) { 
        value = $e.css('-moz-transform'); 
        if (value === undefined) { 
         value = $e.css('-o-transform'); 
         if (value === undefined) { 
          value = $e.css('-ms-transform'); 
          if (value === undefined) { 
           value = $e.css('transform'); 
          } 
         } 
        } 
       } 
       return value === undefined? '' : value; 
      }; 

      var returnValue = getRotation($("div")); 
      alert(returnValue === ''? 
       "Failed to get rotation info!" : 
       "Got it: " + returnValue); 
     }); 
    </script> 
</head> 
<body> 
    <div>rotated</div> 
</body> 
</html> 

live sample on jsfiddle here

所以,我想使用jquery css()閱讀的旋轉角度,但奇怪的是,歌劇10.51和(下方),FF 4.01不能讀它,雖然div呈現正確的旋轉效果。

這看起來像一個jQuery錯誤或瀏覽器錯誤。 有沒有人有Opera/FF的解決方法?

如果您收到一條提示說「有它」,那麼它的工作原理。

感謝您的幫助。

+0

是的,不起作用。那麼這是一個真正的問題還是一個聲明?我寧願看到你將這個文件作爲jQuery開發人員或瀏覽器開發人員的錯誤。 – mekwall 2011-06-10 14:43:01

+0

謝謝,我也懷疑這是一個錯誤。對不清楚的問題抱歉。我剛剛編輯它。 – 2011-06-10 16:15:55

回答

0

好吧,我想出了問題。問題出在我的代碼上,那是不正確地檢查來自css()吸氣劑的返回值。

之前,我有:

if (value === undefined) {... 

的問題是固定的,通過改變上述條件,以:

if (notDefined(value)) {... 

其中notDefined

var notDefined = function(value) { 
    return value == null || value == undefined || value == "" || value == "none"; 
} 

是跨瀏覽器功能,我需要比較所有這三種情況,不僅沒有定義。

你可以看到更新here

它適用於IE瀏覽器的所有最新版本(也IE7和8),火狐,Safari,Chrome和Opera。

+0

啊是的。我應該看到的!爲什麼不做適當的跨瀏覽器友好的方式? 'if(typeof varName ===「undefined」){...}' – mekwall 2011-06-13 06:14:05