LINUX.ORG.RU

IE+XML+CGI+JavaScript. Как?


0

0

Люди, у меня проблема. Я уже целый день на нее потратил, и уже начал рвать клочья на голове Вот блин везде это работает во всех браузерах, а в ИЕ не работает. Вот хоть тресни. Короче рассказываю по порядку:
1) Есть CGI скрипт вот такой:

use CGI qw/:standard/;
print header(-type => 'text/xml', -charset => 'UTF-8'),
'<?xml version="1.0" encoding="UTF-8"?>',
'<mytag mykey="myval">mydata</mytag>';


2) Есть JavaScript, вот такой:

//Костыли для IE:
function addEvent(obj, evType, fn){
if (obj.addEventListener) {
obj.addEventListener(evType, fn, true);
}
if (obj.attachEvent) {
obj.attachEvent(evType, fn);
}
}
function removeEvent( obj, type, fn ) {
if (obj.detachEvent) {
obj.detachEvent(type, fn);
}
else {
obj.removeEventListener(type, fn, false);
}
}
//выполняет запрос на загрузку файла
function upload(form, onload_func) {
//эта функция вызовется после выпонения запроса
addEvent(document.getElementById('myframe'), 'onload', onload_func); //специально для IE
document.getElementById('myframe').onload = onload_func; //А вот это едят все остальные
//выполняем запрос
form.submit();
}
function myOnLoadFunc() {
var frame = document.getElementById('myframe');
removeEvent(frame, 'onload', myOnLoadFunc); //специально для IE
alert(frame.contentWindow.document.getElementsByTagName('mytag').length);
}


3) А вот ХТМЛ:

<form method="POST" action="myscript.cgi" enctype="multipart/form-data" target="myframe">
<input type="hidden" name="myparam" value="XXX">
<input type="file" name="file" onchange="java script:upload(this.form, myOnLoadFunc)"></input>
</form>
<iframe id="myframe" name="myframe" style="display: none;"></iframe>



Ну и вот после того как все это сработает появляется сообщение. В ИЕ оно равно "0". В этом и заключается проблема

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.