【发布时间】:2014-11-01 05:10:29
【问题描述】:
所以我想将 JavaScript 文件 hello.js 中的对象“Hello”传递给另一个 JavaScript 文件 chat.js。
Hello 包含 Strophe.Connections 等成员。
我读到我可以使用 LocalStorage,即 LocalStorage.SetItem("Hello", Hello),然后使用 LocalStorage.getItem("Hello") 检索对象。
这对我不起作用,所以我搜索了一下,发现 JSON stringify,例如Storing Objects in HTML5 localStorage 和 How to send javascript object from one page to another page? 的某人建议使用 stringify。
所以我也试了一下,下面是Hello.js的相关代码:
var Hello = {
connection: null,
start_time: null,
log: function (msg) {
$('#log').append("<p>" + msg + "</p>");
},
send_ping: function (to) {
var ping = $iq({
to: to,
type: "get",
id: "ping1"}).c("ping", {xmlns: "urn:xmpp:ping"});
Hello.log("Sending ping to " + to + ".");
console.log("Sending ping to " + to + ".");
Hello.start_time = (new Date()).getTime();
Hello.connection.send(ping);
},
handle_pong: function (iq) {
var elapsed = (new Date()).getTime() - Hello.start_time;
Hello.log("Received pong from server in " + elapsed + "ms.");
console.log('Received pong from server in " + elapsed + "ms.');
localStorage.setItem("hello", JSON.stringify(Hello));
return false;
}
};
这里是 chat.js
var Hello = {
conn: null
};
$(document).ready(function(e) {
Hello = JSON.parse(localStorage.getItem("hello"));
$('#input3').bind('click',
Hello.connection.send("someStanza"))});
在线 Hello = JSON.parse(localStorage.getItem("hello"));我尝试恢复对象。
下面的 2 行我调用 Hello.connection.send。但是,很明显我无法正确传递和恢复 Hello 对象。例如,在 Google Chrome JavaScript 调试器中,我在该行收到一条错误消息,指出 "Uncaught TypeError: undefined is not a function",我想说这基本上意味着 Chrome JS 引擎无法在 Hello 对象中找到任何 connection.send 成员。
这留下了两个选择。我正在尝试做的事情(传递不是原始数据类型的对象)在我做的方式中是不可能的。或者,我这样做的方式有可能,只是我没有看到其他一些错误/问题。
如果可能,我做错了什么?
如果不能以这种方式传递非原始数据类型,我还能怎么做?
希望我说得足够清楚,以便理解,
谢谢,兄弟,
克里斯
【问题讨论】:
标签: javascript jquery json html local-storage