在页面更改时保持连接对象

时间:2014-02-22 06:49:43

标签: javascript jquery strophe

我有多个HTML页面和一个JavaScript文件,负责与服务器建立strophe连接。我的所有HTML文件都使用相同的Javascript。但是,当我从一个页面移动到另一个页面时,connection对象获得null

例如,我在对象global.js的{​​{1}}文件中创建了一个连接 但是当我从一个HTML页面转移到另一个HTML页面时,MYPro.connection变为空。

有没有办法使用JavaScript或jQuery保留对象?当我使用jQuery mobile它工作正常,但在简单的jQuery中,它不是那样工作。

注意: 出于某种原因,我没有使用jQuery mobile,只转向简单的jQuery

我正在进行的操作如下页面加载和卸载我正在调用MYPro.connection

conn.pause()

2 个答案:

答案 0 :(得分:0)

我建议您使用HTML5。您可以将数据存储在`localStorage中。即使在刷新页面之后以及多个页面之间也会保留数据。

我在JSFiddle上有一个localStorage的工作示例。

简短的例子就在这里。

//Note that if you are writing a userscript, it is a good idea
// to prefix your keys, to reduce the risk of collisions with other 
// userscripts or the page itself.
var prefix = "localStorageDemo-";
$("#save").click(function () { 
var key = $("#key").attr('value');
var value = $("#value").attr('value');
localStorage.setItem(prefix + key, value);      //******* setItem()
//localStorage[prefix+key] = value; also works
RewriteFromStorage();
});

function RewriteFromStorage() {
$("#data").empty();
for(var i = 0; i < localStorage.length; i++)    //******* length
{
    var key = localStorage.key(i);              //******* key()
    if(key.indexOf(prefix) == 0) {
        var value = localStorage.getItem(key);  //******* getItem()
        //var value = localStorage[key]; also works
        var shortkey = key.replace(prefix, "");
        $("#data").append(
            $("<div class='kvp'>").html(shortkey + "=" + value)
               .append($("<input type='button' value='Delete'>")
                       .attr('key', key)
                       .click(function() {      //****** removeItem()
                            localStorage.removeItem($(this).attr('key'));
                            RewriteFromStorage();
                        })
                      )
        );
    }
  }
}

RewriteFromStorage();

希望它有所帮助...... !!!

答案 1 :(得分:0)

您必须存储RID(存储/ cookie /等)并在加载新页面时使用附加功能。不要忘记增加你的RID。

conn = new Strophe.Connection(xmppserver);
conn.attach(JID, SID, RID, onConn);