Передача данных через frame и IE 10

Статус
Закрыто для дальнейших ответов.

Feast

Well-Known Member
Регистрация
12.05.2011
Сообщения
60
Проблема дурного характера:
Есть страшный код вида
Код:
function _sendPost(url, form, extra, success, err) {
if(!url){
return;
}
var BLANK_URL = 'about:blank',
// Unique name, that will not conflict with exsisting names on the page
iname = 'as_wn_' + _timeStamp().toString(36) + rand().toString(36),
//fname = iname + '_onload',
iframe = $('<iframe id="' + iname + '" name="' + iname + '" src="' + BLANK_URL + '" onload="//"></iframe>').hide().css({
opacity:0,
position:'absolute'
})[0],

files = $(form).find(':file'),
tryAfter = 1,
idoc,
iform;

iform = $('<form '
+ 'target="' + iname + '" '
+ 'action="' + url + '" '
+ 'method="POST" '
+ 'enctype="' + (files.length > 0 ? 'multipart/form-data' : 'application/x-www-form-urlencoded') + '">'
+ inputsHTML(
$( form )
.find( ':input' )
.not( files )
.serializeArray(),
extra
)
+ '<input type="submit" /></form>');
//*
files.each(function(){
var me = $(this);
me.clone(true).insertAfter(this).removeAttr('id');
me.appendTo(iform);
});
$(iframe)
.prependTo(document.body)
.load(iframeonload);
// Clever submit for situations with input named "submit"
iform.submit(function(){}).hide().appendTo(body).find(':submit').click().end().remove();
// Cleanup for IE
iform =
files =
form = null;
function rand(){
return ( '' + Math.random() ).substring(2, 10) * 1
}
function iframeonload( evt ){
var name = '',
ifr = iframe,//_id(iname),
win = ifr.contentWindow,
loc = win.location,
violationerror,
ffError;
try {
name = win.name;

} catch( violationerror ) {
console.log('error: ' + violationerror);
win.location.replace(BLANK_URL);
return;
}
if(name === undefined) {
win.location.replace(BLANK_URL);
return;
}
if(name === iname) {
if(tryAfter) {
--tryAfter;
win.location.replace(BLANK_URL);
return;
}

_isFunction(err) && err();
} else {
_isFunction(success) && success(name);
}
$(ifr).unbind();
try {
win.document.open();
win.document.write(" ");
win.document.close();
} catch( ffError ) {
//
} finally {
$(ifr).remove();
evt =
loc =
success =
err =
idoc =
iframe =
ifr =
win = null;
}
}
function inputsHTML( arr, extend ) {
var html = [],
l = arr.length,
val,
key,
equal;
while(l--) {
val = arr[l];
if( val.name in extend ) {
continue;
}
html[l] = '<input type="hidden" name="' + VAR_FILTERS.html(val.name) + '" value="' + VAR_FILTERS.html(val.value) + '" />';
}
for( key in extend ) {
html.push(
'<input type="hidden" name="' + VAR_FILTERS.html(key) + '" value="' + VAR_FILTERS.html(extend[key]) + '" />'
);
}
return html.join('');
}
}
Который вызывает iframe по url с поддомена и потом тягает нужный атрибут window.name. Эту штуку писали динозавры. Вобщем начал с этой штукенцией работать, ибо вылетела проблема в IE 10, он очень сильно ругается на строчку
Код:
name = win.name
говорит, что "Отказано в доступе" и шайтанама.

Нагуглил до того, что пробелма в кроссдоменности, мол, IE не понимает, что lala.site.com является частью site.com
Вопрос: как научить этого зверя? Намучался уже с ним(
 
Статус
Закрыто для дальнейших ответов.
Верх Низ