0

隠しフレーム技術を使用してサーバーからデータを取得する Web ページを開発しています。データはリアルタイムで更新され、サーバーは変更のたびにブラウザーに通知します。

コンポーネントは IE と Firefox の両方で動作していますが、chrome では、サーバーによって取得されたコールバック関数がクライアント ブラウザーで実行されません。ただし、開発者ツールで開かれた接続と、その接続を介して受信したデータが成長していることがわかります。

一部のブラウザでは、サーバーから受信したデータの解析と実行に問題がある可能性があると読みましたが、そのような場合の解決策を見つけることができませんでした。

この場合、httpヘッダーを送信する必要があるかもしれませんが、何を検索すればよいかさえわかりません。

編集: コード サンプル これは、サーバーに接続するために使用している関数です。サインイン手順の後に呼び出されます。サインインは、接続ステップと同じ方法で実装されます。

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;
}    
4

1 に答える 1