2012-09-20 28 views
13

Tôi đã đấu tranh trong một thời gian cố gắng để có tính năng xoay (xdeg) trên IE 8, 7 và 6, cho i google này một thời gian và tìm thấy cssSandpaper nhưng kể từ khi tôi phải tải 4 kịch bản khác nhau tôi muốn làm nó chỉ nếu cần thiết của nó đối với im này sử dụng modernizr im cố gắng một cái gì đó như thế này:Modernizr với cssSandpaper?

<head> 

     <link rel="stylesheet" href="stilos/estilo.css" /> 
     <script src="scripts/modernizr.custom.19387.js"></script> 
     <script src="scripts/jquery-1.8.1.js"></script> 
     <script src="scripts/misfallbacks.js"></script> 
</head> 

<body> 
    <div id="acerca"><a href="#">Acerca de mi</a></div> 
</body> 

tập tin css của tôi (estilo.css):

#acerca{ 
    -webkit-transform: rotate(90deg); 
    -moz-transform: rotate(90deg); 
    -o-transform: rotate(90deg); 
    -ms-transform:rotate(90deg); 
    -sand-transform:rotate(90deg); 
    position: relative; 
    top: -233px; 
    left: 462px; 
    width: 123px; 
    height: 23px; 
    z-index:100; 
} 

tập tin js của tôi (misfallbacks.js)

Modernizr.load({ 
     test:Modernizr.csstransforms, 
     nope:['transformie/EventHelpers.js/','transformie/cssQuery-p.js','transformie/sylvester.js','transformie/cssSandpaper.js'] 

    );//Fin de monernizr on load 

Nó hoạt động tốt trên safari, chrome, opera, trình duyệt Firefox và IE9 nhưng khi tôi cố gắng trên IE8 hoặc IE7 tôi nhận được lỗi sau trên console
SCRIPT5007: Unable to get value of the property 'addEventListener': object is null or undefined EventHelpers.js, line 49 character 9
Tôi đã thêm một console.log để thử và tìm hiểu những gì đã xảy ra và đi đến dòng mà ở đây nó là (EvenHelpers.js):

me.addEvent = function(obj, evType, fn){ 
     console.log(obj);//I've added this to try to figure out what is going on 
     if (obj.addEventListener) {........//here is the error 

trên đường chạy trốn tới tôi đã kiểm tra các giao diện điều khiển một lần nữa một cái cưa LOG: null này, tôi không có chuyên môn về javascript để im không chắc chắn những gì là đang diễn ra nhưng tôi thử một cái gì đó khác biệt và thêm cssSandPaper bằng cách sử dụng thẻ tập lệnh như sau:

<head> 

    <link rel="stylesheet" href="stilos/estilo.css" /> 

    <script src="scripts/modernizr.custom.19387.js"></script> 
    <script src="scripts/jquery-1.8.1.js"></script> 
    <!--<script src="scripts/misfallbacks.js"></script>--> 
    <script src="transformie/EventHelpers.js"></script> 
    <script src="transformie/cssQuery-p.js"></script> 
    <script src="transformie/sylvester.js"></script> 
    <script src="transformie/cssSandpaper.js"></script> 
</head> 

trước sự ngạc nhiên của tôi làm việc như một nét duyên dáng, và như thế này tôi có tính năng xoay ngay cả trong IE7 và IE8 và giao diện điều khiển nói này ngay bây giờ LOG: [đối tượng HTMLScriptElement] nhưng im nhận thức được rằng việc sử dụng cách này tôi sẽ luôn tải 4 kịch bản này ngay cả khi chúng không cần thiết và đó không phải là mục tiêu mi nhưng kể từ khi bắt đầu với modernizr và javacript để được hones tôi không có ý tưởng về những gì đang xảy ra D: và tại sao khi tôi tải các kịch bản bằng cách sử dụng nope: [' '] từ công việc hiện đại. bất cứ ai biết một cách để giải quyết điều này? ... xin lỗi vì tiếng anh của tôi không phải là ngôn ngữ đầu tiên của tôi

chỉnh sửa: tôi đã nghiên cứu một chút về đối tượng này HTMLScriptElement và giả sử của nó để đặt lại thẻ script tôi cho rằng khi tôi tải tệp js bằng nope: from modernizr một cái gì đó thay đổi và đối tượng này trở thành null kể từ khi không còn được tải bên trong một thẻ script ... nhưng im vẫn còn trong cùng một vấn đề ... làm thế nào để tôi giải quyết này? :/

jsFiddle Test Modernizr

jsFiddle Test without Modernizr

Trả lời: tôi đã kết thúc bằng nếu lt IE 9 để tải các kịch bản giấy cát nó đã hoàn thành công việc

+1

Bạn có thể thêm jsfiddle không? – armonge

Trả lời

4

Tôi đã cố gắng để giải quyết này với cách tiếp cận khác nhau và dễ dàng hơn. Nó làm việc cho tôi và tôi cũng muốn nó hoạt động cho bạn.

Tôi đã bao gồm IE9.JS (js giúp trình duyệt IE < 9 hoạt động như tuân thủ các tiêu chuẩn IE9 +). bạn có thể truy cập liên kết này để biết cách thực hiện điều đó. http://code.google.com/p/ie7-js/

Sau đó, tôi đã sửa đổi một chút CSS của bạn estilo.css như sau. Tôi thêm kiểu sau vào định nghĩa kiểu #acerca của bạn.

filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; 

Nó hoạt động. vấn đề duy nhất là loại chuyển đổi này không thể đọc được dưới dạng biến đổi -ms hoặc bất kỳ biến đổi web chuẩn nào khác.

+0

Điều này cũng hoạt động, nhưng tôi đã kết thúc bằng để tải các kịch bản giấy cát nó có công việc làm quá ở đây là trang web nếu có ai muốn kiểm tra xem nó ra http://www.luisz.alojalo.info/Portafolio/ –

0

ok, bạn mua cho tôi i định vị trên này giống như nửa giờ có lỗi trong EventHelpers.js trong dòng chức năng init 445 nó có câu lệnh cc_on để chỉ có nghĩa là sẽ đọc nó.

giờ đây, thẻ này tạo thẻ tập lệnh khi chạy, thẻ không được tạo sao cho nó bằng 0. và mã bị ngắt!

tôi đã sửa đổi EventHelpers.js và khắc phục sự cố. mã gốc viết thẻ script với document.write tôi thay đổi nó để document.createElement và nó có vẻ làm việc không có lỗi tại consloe

jsfiddle: http://jsfiddle.net/5xdDG/3/

bây giờ nó thực sự cần xoay div ngay cả trong IE7 hoặc 6 bởi vì trong jsfiddle tôi không thấy nó xoay?

và tôi rất tiếc, tiếng Anh không phải là ngôn ngữ đầu tiên của tôi;)

+0

không hiển thị lỗi trên bảng điều khiển, nhưng vẫn không hoạt động –

0

Có vẻ như một tập lệnh cần tải sau tập lệnh kia.

Hãy thử với kịch bản này:

if (!Modernizr.csstransforms){ 
    Modernizr.load({ 
     load: 'transformie/EventHelpers.js', 
     complete: function() { 
      console.log("loaded EventHelpers"); 

      Modernizr.load({ 
       load: 'transformie/cssQuery-p.js', 
       complete: function() { 
        console.log("loaded cssQuery"); 
        Modernizr.load({ 
         load: 'transformie/sylvester.js', 
         complete: function() { 
          console.log("loaded sylvester"); 

          Modernizr.load({ 
           load: 'transformie/cssSandpaper.js', 
           complete: function() { 
            console.log("loaded cssSandpaper"); 
           } 
          }); 

         } 
        }); 
       } 
      }); 

     } 
    }); 

}; 
+0

vẫn không hoạt động @CarlosMartinez –

+0

không hoạt động cho tôi:/ –

Các vấn đề liên quan