对此几乎没有类似的问题,但在我的案例中没有一个解决方案有效。 我对此非常陌生,所以这个问题也可能是我遗漏的一个基本问题。
如果发生了点击,我试图用点击的对象打开一个新标签, 所以现在我只想在新标签中提醒它。
父窗口代码:
$(document).on("click", ".button", function(){
var toSend = $(this);
var newTab = window.open("test.html", "_blank");
newTab.myData = toSend; // this one was a solution for a similar problem,
// didn't work for me.
});
这是打开的窗口:
$(document).ready(function() {
console.log(window.parent.toSend);
console.log(window.parent.myData);
console.log(myData);
console.log(window.opener.toSend);
});
前2个日志返回“undefined”,第三个是抛出未定义myData的异常(Uncaught ReferenceError:myData未定义)。 对于后一个日志,我得到“Uncaught SecurityError:Blocked a origin with origin”null“访问一个原始”null“的帧。协议,域和端口必须匹配。”
非常感谢帮助,谢谢!
edit:console.log(toSend)会记录正确的对象,并已定义。
答案 0 :(得分:1)
在您的代码中,toSend
是函数内的本地变量。要在window
对象上访问,它必须是全局变量。从函数中创建全局变量的一种方法是在window
上分配属性。所以:
$(document).on("click", ".button", function(){
window.toSend = $(this);
var newTab = window.open("test.html", "_blank");
});
然后
$(document).ready(function() {
console.log(window.opener.toSend);
});
也就是说,最好避免使用全局变量,因此如果必须使用多条信息进行此操作,请使用引用对象的单个全局变量(使用不太可能冲突的名称)与事物),并将该对象的各条信息作为属性。