Проблема с IE
Добрый день.Вот просто решил попробовать открыть этот код в IE и опупел мягко говоря от результата...Все
<div></div>создаютса не так как я создавал.Подключение xml файла как-бы происходит но везде где подключаетса в коде xml выводитса udentified.Что с этим можно поделать?Вообще я посидел почитал на выходных об подобных проблемах,и понял что так сказать целая наука что бы все поддерживалось в любом браузере?Почитал про кросс-браузерность несовсем допер в чем же беда,ну вернее в чем беда я понял что IE что-то неподдерживает из кода а что именно незнаю.Подскажите пожалуста где можно почитать про такие проблемы и как с ними боротса? xml'ка <?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet href="style.css" type="text/css"?> <!DOCTYPE test SYSTEM "test.xml"> <test> <style border="5px solid black" hight="350px" width="350px" padding="20px" margin="20px" position="relative" ></style> <buttonstyle hight="40px" width="50px" position="fixed" marginleft="150px" ></buttonstyle> <attemptsanswer>1</attemptsanswer> <questions> <question>Вопрос</question> <answer rating="1"> </answer> <answer rating="0"> </answer> <question1>Вопрос1</question1> <answer rating="0"> </answer> <answer rating="1"> </answer> <textanswer>Да</textanswer> <textanswer>Нет</textanswer> </questions> <TextButton>Ответить на вопрос</TextButton> <TextButton>Стереть ответы</TextButton> <TextButton>начать тест заново</TextButton> <ResultTextTrue>Ваш ответ верен!</ResultTextTrue> <ResultTextFalse>Ваш ответ не верен!</ResultTextFalse> </test> JavaScript <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Test</title> <script type="text/javascript" src="jquery.js"></script> <script src="script.js" type="text/javascript"></script> <script type="text/javascript"> var answer={} $(document).ready(function(){ $.ajax({ type: "GET", url: "test.xml", dataType: "xml", success: vasa }); var button2 = document.getElementById("id1"); button2.style.display='none'; function vasa(xml) { attemptsanswer=$(xml).find('attemptsanswer')[0].textContent; textanswer=$(xml).find('textanswer ')[0].textContent; $('.cont2').append(''+textanswer+''); textanswer=$(xml).find('textanswer')[1].textContent; $('.cont2').append(''+textanswer+''); question=$(xml).find('question')[0].textContent; $('.cont1').append('<p><label><h4>'+question+'</h4></label></p>'); question1=$(xml).find('question1')[0].textContent; $('.bond1').append('<p><label><h4>'+question1+'</h4></label></p>'); TextButton=$(xml).find('TextButton')[0].textContent; $('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>'); TextButton=$(xml).find('TextButton')[1].textContent; $('.lolki').append('<p><label><h4>'+TextButton+'</h4></label></p>'); TextButton=$(xml).find('TextButton')[2].textContent; $('.lolki1').append('<p><label><h4>'+TextButton+'</h4></label></p>'); ResultTextTrue=$(xml).find('ResultTextTrue')[0].textContent; ResultTextFalse=$(xml).find('ResultTextFalse')[0].textContent; var answers = $(xml).find('answer'); answers.each(function(index){ var a = this.textContent; var rating = +this.getAttribute('rating'); var inputs = document.getElementsByTagName('input'); if(inputs.length<2) { $('.cont').append('<input name="group1" type="radio">'); } else { $('.bond').append('<input name="group2" type="radio">'); } answer[index] = rating; }); var div = document.getElementById('id') var decoration = xml.querySelector('style'); div.style.border = decoration.getAttribute('border'); div.style.width = decoration.getAttribute('width'); div.style.height = decoration.getAttribute('hight'); div.style.padding = decoration.getAttribute('padding'); //div.style.margin = decoration.getAttribute('margin'); div.style.position = decoration.getAttribute('position'); // var p = document.getElementById('id1') // var decoration = xml.querySelector('buttonstyle'); // p.style.position = decoration.getAttribute('position'); // p.style.width = decoration.getAttribute('width'); // p.style.height = decoration.getAttribute('hight'); // p.style.margin-left = decoration.getAttribute('marginleft'); // p.style.margin = decoration.getAttribute('margin'); } }); var pressed=0; function checkAnswer() { var error = false; var inputs = document.getElementsByTagName('input'); for(var i = 0; i < inputs.length ; i++){ var checked = inputs[i].checked; var right = answer[i] == 1; if (checked !== right){ error=true; break; } } if(pressed<attemptsanswer) { i = ++pressed; } else { alert("Вы исчерпали количество попыток") pressed=0; var button = document.getElementById("button"); button.style.display='none'; var button1 = document.getElementById("id2"); button1.style.display='none'; var button2 = document.getElementById("id1"); button2.style.display=''; button2.onclick = function(event){ button.style.display=''; button1.style.display=''; button2.style.display='none'; output.value='Пройдите тест ище раз' } } output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+''; return false; } </script> </head> <body> <form onsubmit="return checkAnswer()"> <tr> <td> <div id="id"> <div class='cont2' style="margin-left:156px"></div> <hr> <div class='cont1' ></div> <div align="center" class='cont' ></div> <hr> <div class="bond1"></div> <div align="center" class='bond'></div> <hr> </div> </td> <td> <p style="position:relative"><button id="button" type="submit" ><div class='onki'></div></button> <button id="id2" type="reset"><div class='lolki'></div></button><button id="id1" type="reset"><div class='lolki1'></div></button></p> <p style=" position:relative"><textarea id="output" readonly></textarea></p> </td> </tr> </form> </body> </html> |
Пока единственное что нашол это то что в IE нету TextContent а есть innerText и то после исправления это проблему не решило.А только ухудшило.
А и непомню где но гдето вычитал что если парсить xml через ajax в IE это ни как незаработает а что бы работало и в IE нужно использовать json.Скажите это правда?Если да мне нужно ереписывать почти весь код по новой? И да если это критично то пользуюсь wamp server.Так как нашол что ище может зависить от этого,хотя почитав посты людей и я понял что у меня собственно уже все соблюдено |
Цитата:
Цитата:
|
danik.js,
А можно часть кода?ну получение хоть чего-то того что сейчас я получаю не кроссбраузерно?Я не совсем понимаю куда это применить. |
Гы, а я и забыл про jquery )
в jquery весь код уже написали за тебя, поэтому xml должен работать. Единственное, вместо [0].textContent пиши .text() |
спасибо.Тогда если вот так то в IE текст отображаетса а разбивка страници которую я тоже подключаю из xml и сама логика что будет происходить при нажатии на кнопку работает не коректно.
Ну тоесть не создаётса эта рамка,и логика обработки правильности ответов не работает.И ище один прикол,создаётса только одна кнопка в которой текс всех трех,и я непойму почему?Ведь я вызываю разные класы для трех разных кнопок Делаю это вот так attemptsanswer=$(xml).find('attemptsanswer').text(); textanswer=$(xml).find('textanswer ').text(); $('.cont2').append(''+textanswer+''); textanswer1=$(xml).find('textanswer1').text(); $('.cont2').append(''+textanswer1+''); question=$(xml).find('question').text(); $('.cont1').append('<p><label><h4>'+question+'</h4></label></p>'); question1=$(xml).find('question1').text(); $('.bond1').append('<p><label><h4>'+question1+'</h4></label></p>'); TextButton=$(xml).find('TextButton').text(); $('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>'); TextButton1=$(xml).find('TextButton1').text(); $('.lolki').append('<p><label><h4>'+TextButton1+'</h4></label></p>'); TextButton2=$(xml).find('TextButton2').text(); $('.lolki1').append('<p><label><h4>'+TextButton2+'</h4></label></p>'); ResultTextTrue=$(xml).find('ResultTextTrue').text(); ResultTextFalse=$(xml).find('ResultTextFalse').text(); |
а вообще я немогу понять почему оно не работает,ведь все подключения из xml делаютса с помощью alax jquery а IE поддерживает их полностью.
|
Ну и я смог решить только проблему с кнопками,теперь кнопки создаютса нормально как нужно.А весь фукционал не работает.
Неработае подключение стилей вот этих var div = document.getElementById('id') var decoration = xml.querySelector('style'); div.style.border = decoration.getAttribute('border'); div.style.width = decoration.getAttribute('width'); div.style.height = decoration.getAttribute('hight'); div.style.padding = decoration.getAttribute('padding'); div.style.margin = decoration.getAttribute('margin'); div.style.position = decoration.getAttribute('position'); и неработает проверка ответов на правильность и вывод в текстовое поле. что с этим можно поделать?подскажите пожалуста |
querySelector не работает в IE7. Возможно в IE8 нет этого метода у xml-узлов.
|
крутяк буду знать,а как это можно исправить?Ну что есть в IE?
Да и пробивал почти все методы и свойства на совместимость вот что пишут про querySelector Если говорить о совместимости с браузерами, то querySelector() поддерживаются в IE8+ (только в стандартном режиме IE8) а я пытаюсь открывать в IE9,и поидее все должно работать( и почему вот это function checkAnswer() { var error = false; var inputs = document.getElementsByTagName('input'); for(var i = 0; i < inputs.length ; i++){ var checked = inputs[i].checked; var right = answer[i] == 1; if (checked !== right){ error=true; break; } } if(pressed<attemptsanswer) { i = ++pressed; } else { alert("Вы исчерпали количество попыток") pressed=0; var button = document.getElementById("button"); button.style.display='none'; var button1 = document.getElementById("id2"); button1.style.display='none'; var button2 = document.getElementById("id1"); button2.style.display=''; button2.onclick = function(event){ button.style.display=''; button1.style.display=''; button2.style.display='none'; output.value='Пройдите тест ище раз' g=++pressed1; alert(pressed1); if(pressed1>attemptsanswer) { button.style.display='none'; button1.style.display='none'; button2.style.display='none'; var button3 = document.getElementById("id3"); button3.style.display=''; } } } output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+''; return false; } тоже не работает? |
Часовой пояс GMT +3, время: 16:25. |