Javascript 在子弹出窗口中设置字段
我正在尝试用一些javascript创建一个html页面。javascript打开一个子弹出窗口并尝试填充该页面中的一个字段。这是我得到的代码:Javascript 在子弹出窗口中设置字段,javascript,html,popup,Javascript,Html,Popup,我正在尝试用一些javascript创建一个html页面。javascript打开一个子弹出窗口并尝试填充该页面中的一个字段。这是我得到的代码: //creates a new popUp function openRequestedPopup(url,name,top,left) { return window.open(url, name, "width=640, height=640"+", top="+top+", left="+left); } //setting field in
//creates a new popUp
function openRequestedPopup(url,name,top,left) {
return window.open(url, name, "width=640, height=640"+", top="+top+", left="+left);
}
//setting field in child popup
function setTextInputField(popUp,id,text){
var el=popUp.document.getElementById(id);
el.setRangeText(text);
}
x=openRequestedPopup("https://www.facebook.com/","1",0,0);
setTextInputField(x,"email","lalalalala");
但我得到了一个错误:
SecurityError: Blocked a frame with origin "null" from accessing a cross-origin frame.
code: 18
message: "Blocked a frame with origin "null" from accessing a cross-origin frame."
name: "SecurityError"
stack: "Error: Blocked a frame with origin "null" from accessing a cross-origin frame.↵ at Error (native)↵ at <anonymous>:2:10↵ at Object.InjectedScript._evaluateOn (<anonymous>:668:39)↵ at Object.InjectedScript._evaluateAndWrap (<anonymous>:607:52)↵ at Object.InjectedScript.evaluate (<anonymous>:519:21)"
__proto__: DOMException
SecurityError:阻止原点为“null”的帧访问跨原点帧。
代码:18
消息:“阻止原点为“null”的帧访问跨原点帧。”
名称:“SecurityError”
堆栈:“错误:阻止原点为“null”的帧访问跨原点帧。↵ 错误(本机)↵ 两点十分↵ 在Object.InjectedScript.\u evaluateOn(:668:39)↵ 在Object.InjectedScript.\u evaluateAndWrap(:607:52)↵ 在Object.InjectedScript.evaluate(:519:21)
__proto_uu;:DomeException
我理解不是每个人都应该被允许从其他页面获取元素。但我不明白为什么不允许我获取该元素,因为它是我的子页面/弹出窗口。这有工作区吗
提前感谢请考虑您登录facebook时可以查看的所有敏感数据。现在想象一下,你在当前会话中登录到facebook,然后你进入某个随机网站,该网站会打开一个指向facebook的弹出窗口,并且可以完全访问和控制该弹出窗口。他们现在可以用你的facebook帐户和其中的任何数据做任何事情。这就是为什么浏览器中存在跨源安全性。嗯,我明白了,所以我不能使用javascript和弹出窗口登录facebook?不,我不这么认为。我恐怕:(,你知道是否可能有一个父页面和多个子弹出窗口。每个弹出窗口登录到不同的facebook帐户?(因此,当我登录到popup 1时,我仍然可以使用不同的凭据登录到popup 2)问题是,您需要每个弹出窗口与facebook进行不同的会话,这需要每个窗口中有不同的cookie。因为cookie的范围是浏览器范围(除了chrome中的'incognito'模式,尽管你不能告诉chrome从JS中以incognito打开一个新窗口),这是不可能的。