2013-06-06 3 views
0

Я разрабатываю веб-страницу, используя технику скрытого фрейма для извлечения некоторых данных с сервера. Данные обновляются в реальном времени, и сервер уведомляет обозреватель при каждой модификации.Скрытый обратный вызов iframe chrome не срабатывает

Компонент работает как в IE, так и в Firefox, но в хроме функция обратного вызова, полученная сервером, не выполняется в клиентский браузер. Однако я вижу соединение, открытое в инструментах разработчика, и полученные данные через это соединение растут.

Я читал, что некоторые браузеры могут иметь проблемы с анализом и выполнением данных, полученных с сервера, но я не смог найти решение для этих случаев.

Возможно, мне нужно отправить http-заголовок в этот случай, но я даже не знаю, что искать.

EDIT: Пример кода Это функция, которую я использую для подключения к серверу. Он вызывается после знака в шаге. Знак реализован так же, как и шаг подключения.

function __sendConnectRequest() 
{ 
    document.getElementById(UID).setAttribute('value', __username); 
    document.getElementById(SID).setAttribute('value', __sessionKey); 
    document.getElementById(PID).setAttribute('value', __privateKey); 
    try 
    { 
     document.getElementById('connectFormId').submit(); 
    } 
    catch (err) 
    { 
     alert("error connecting"); 
     console.log("__sendConnectRequest: " + err.message); 
    }  
} 


var __connectResponseCallback = null; 
function __setConnectResponseCallback(callback) 
{ 
    __connectResponseCallback = callback; 
} 

function __connectResponseHandler(statusCode) 
{ 
    if(__connectResponseCallback) 
    { 
     __connectResponseCallback(statusCode);  
    } 
} 

Вот как я создаю свои элементы DOM. Эти элементы добавляются в тело документа, а форма имеет некоторые входные строки.

function getNewIframe(name, id) 
{ 
    //KNOWN BUG IN IE while creating iframes 
    //http://webbugtrack.blogspot.com/2007/10/bug-235-createelement-is-broken-in-ie.html 
    var iframe; 
    try 
    { 
     iframe = document.createElement('<iframe name="' + name + '">'); 
    } 
    catch (ex) 
    { 
     iframe = document.createElement('iframe'); 
     iframe.name = name; 
    } 
    iframe.id = id; 
    iframe.style.display = 'none'; 
    return iframe; 
}  

function getNewForm(name, id, target, action) 
{ 
    var form = document.createElement("form"); 
    form.name = name; 
    form.id = id; 
    form.method = 'post'; 
    form.target = target; 
    form.action = serverUrl+action; 
    form.style.display = 'none'; 
    return form; 
}  
+0

Можем ли мы видеть код? возможно даже jsFiddle, потому что это действительно непонятно – EaterOfCode

ответ

0

Решение было разрешено путем добавления заголовка multipart/x-mixed-replace в ответе сервера. Таким образом, данные выполняются в кусках, и браузеру не нужно ждать, пока весь ответ будет получен.

Кажется, что это старый стандарт в методах комет.

Смежные вопросы