当用户点击按钮时,我正在启动一个html页面。我需要能够将一个地址数组传递给新窗口,以便我可以将它们加载到表中,但是我无法找到任何方法将数组传递到新窗口。
我最近的尝试如下:
<button onclick="openWindow(['Joe Smith\n1 Address\nCity 12345',
'Joe Smith\n2 Address\nCity 12345'])">Button</button>
function openWindow(addresses){
var myWindow = window.open("NewPage.html");
myWindow.addresses = addresses;
}
然后在NewPage.html中我得到了:
<script type="text/javascript">
function bodyLoaded() { //gets called when the body loads
var addresses;
alert(addresses);
}
</script>
我总是在新窗口的警报中未定义。如果我在openWindow()函数中设置警报,我确实确认我正在获取地址。
我还尝试过其他一些事情,包括使用localStorage(How to pass an array to a new page using javascript?),但我不知道我是否正确地做了。我也尝试执行函数从openWindow函数加载新窗口上的表(传入地址变量),但我不断收到错误说&#34;错误:对象不支持属性或方法&#34; 。例如:
function openWindow(addresses){
var myWindow = window.open("NewPage.html");
myWindow.loadTable(addresses); //the loadTable function exists in a .js file
}
理想情况下,我只想将一个数组传递到新窗口,但我已经暂时停留了一段时间。任何帮助或建议将不胜感激。
答案 0 :(得分:3)
一种可能性是将params数组作为url中的查询传递。所以像这样:
var myWindow = window.open("NewPage.html?addresses[0]=Joe Smith\n1 Address\nCity 12345&addresses[1]=Joe Smith\n2 Address\nCity 12345");
然后在javascript中使用此功能
<script type="text/javascript">
function bodyLoaded() { //gets called when the body loads
var urlParams = new URLSearchParams(window.location.search);
var addresses = urlParams.get('addresses'));
alert(addresses);
}
</script>
编辑:
localstorage也根据这个答案工作:(How to pass an array to a new page using javascript?)
window.localStorage.setItem("cart", JSON.stringify(cart)); // Saving
var cart = JSON.parse(window.localStorage.getItem("cart")); // Retrieving
答案 1 :(得分:2)
新窗口由代码打开,因此代码可以控制该窗口。尝试这样的事情。
function openWindow(addresses) {
var myWindow = window.open("newpage.html");
myWindow.onload = function() {
var myDiv = this.document.createElement('div');
this.document.body.appendChild(myDiv);
for (var i = 0, a; a = addresses[i]; ++i) {
myDiv.innerHTML += a;
}
}
}