从我的第一个窗口(我将其称为窗口 1)我正在使用打开第二个窗口(窗口 2)
var w = window.open("", "");
在窗口 2 中,我使用如下代码引用和操作在窗口 1 中定义的数组
window.opener.object2[0].drivedistance = driveDistance;
这段代码工作正常。但是,在窗口 2 中显示此数组的结果之前,我需要对其进行排序。我的排序尝试:
window.opener.objects2.sort(compareFunc)
function compareFunc(a, b){
return (a.drivedistance - b.drivedistance)
}
如果我在 jsfiddle 中使用相同的方法而不从远程窗口调用它似乎工作正常。
当我单步执行代码时,我可以看到它正在执行 compareDriving 中的代码。没有异常被抛出。但是,在调用 compareDriving 完成后,数组未排序。我不知道这是否可能是某种安全问题,因为我正在排序的数组存在于窗口 1 中,但我的 javascript 在窗口 2 中?关于为什么这种排序代码不起作用的任何想法将不胜感激。
根据评论,我整理了一个似乎很好地证明了它的问题的 jsfiddle。为了明确最终的解决方案,我需要第 1 页作为集合的存储库,但我需要第 2 页来启动导致第 1 页上的集合被排序的逻辑。
奇怪。在玩了更多之后,看起来我可以通过向排序函数传递一个存在于第 1 页而不是第 2 页的处理程序来完成我想要的。但是当我在第 2 页远程运行该函数时,它会以相反的方式排序当我从第 1 页运行它时的顺序。我可能会玩这个来让它工作,但仍然会感谢任何关于最佳实践的建议。这是我最新的发现。
请记住,当我使用弹出功能时,您需要启用弹出窗口来测试其中的任何一个。
编辑。我发现最后一个 jsfiddle 上的跨浏览器结果参差不齐。我的一个朋友在 chrome 中尝试过它,它对他有用。我在我的 chrome 中尝试过,结果没有排序。IE 反向排序。我根本没有让firefox工作。关于实现跨浏览器兼容的跨窗口排序的方法的任何帮助都是我认为我真正想要的。感谢您的任何和所有答案。