Модернизр с cssSandpaper?
Я боролся некоторое время, пытаясь использовать функцию поворота (xdeg) в IE 8, 7 и 6, для этого я некоторое время гуглял и нашел cssSandpaper, но так как мне нужно загрузить 4 разных скрипта, я хочу сделать это только Если это необходимо для этого я использую Modernizr я пытаюсь что-то вроде этого:
<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>
мой файл CSS (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;
}
мой файл js (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
Он отлично работает на Safari, Chrome, Opera, Firefox и IE9, но когда я пробую IE8 или IE7, я получаю следующую ошибку на консолиSCRIPT5007: Unable to get value of the property 'addEventListener': object is null or undefined EventHelpers.js, line 49 character 9
Я добавил console.log, чтобы попытаться выяснить, что происходит, и перешел к этой строке, вот она (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
при следующем запуске я снова проверил консоль пилой это LOG: null
Я не эксперт по javascript, поэтому я не уверен, что происходит, но я попробую что-то другое и добавил cssSandPaper с помощью тега script следующим образом:
<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>
к моему удивлению, работал как шарм, и вот так у меня есть функция поворота даже в IE7 и IE8, и консоль говорит это сейчас LOG: [объект HTMLScriptElement], но я знаю, что используя этот способ, я всегда буду загружать эти 4 скрипта, даже когда они не нужны, и это не моя цель, но так как я начинаю с модернизатора и javacript, чтобы быть хонами, я понятия не имею, что происходит на D: и почему, когда я загружаю скрипты, используя nope:[''] из modernizr не работает, кто-нибудь знает способ решить это? ... извините за мой английский не мой первый язык
редактировать: я провел небольшое исследование этого объекта HTMLScriptElement и предположил, что он ссылается на тег скрипта, я полагаю, что когда я загружаю файл js с nope: от modernizr что-то меняется, и этот объект становится нулевым, так как больше не загружается внутри тега скрипта... но я все еще в той же проблеме... как мне решить это?: /
Ответ: в итоге я использовал if lt IE 9 для загрузки скриптов наждачной бумаги, он выполнил свою работу
3 ответа
Я попытался решить это с другим и более легким подходом. Это сработало для меня, и я хочу, чтобы это сработало и для вас.
Я включил IE9.JS (js, который позволяет браузерам IE <9 вести себя как соответствующие стандартам IE9 +). Вы можете посетить эту ссылку, чтобы узнать, как это сделать. http://code.google.com/p/ie7-js/
Затем я немного изменил ваш CSS estilo.css
следующим образом. Я добавляю следующий стиль в ваше определение стиля #acerca.
filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)';
Это сработало. Единственная проблема заключается в том, что этот вид преобразования не так удобен для чтения, как -ms-transform или любое другое стандартное веб-преобразование.
Хорошо, вы покупаете меня, я размещаю на этом, как полчаса, есть ошибка в EventHelpers.js в init
В строке 445 функции есть оператор cc_on, так что только ie будет читать его.
теперь он создает тег сценария во время выполнения, и тег не был создан, поэтому он равен нулю. и код сломан!
я изменил EventHelpers.js и исправил проблему. Исходный код напишите тег сценария с document.write
я изменил это на document.createElement
и, кажется, не работает никаких ошибок в консло
jsfiddle: http://jsfiddle.net/5xdDG/3/
теперь он действительно должен вращать div даже в ie7 или 6, потому что в jsfiddle я не вижу его повернутым?
и мне жаль, английский не мой родной язык;)
Кажется, что один скрипт должен загружаться после другого.
Попробуйте с помощью этого скрипта:
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");
}
});
}
});
}
});
}
});
};