首先,我想说我现在已经编程了大约3个月的JavaScript,而且我并不十分关心通过标准或最佳实践来解决这个问题。我主要担心的是学习使用DOM。我不想使用任何jQuery,因为我不熟悉它。
我试图做一个非专业的"登录"使用JavaScript和DOM在我的页面上运行。首先,我正在使用"登录"将显示的屏幕"隐藏"最初然后显示"阻止"在使用时。当我在"登录"后面添加一个黑暗的屏幕时,这很好用,看起来非常好。屏幕添加较少的不透明度(0.1不透明度)到页面的主要部分"登录屏幕"。
当我关闭"登录"这个(不透明度)将恢复正常。屏幕。所以你可以看到使用相同的DOM在同一页面内发生的所有事情。好的,这就是我希望它工作的方式:你创建一个用户名然后你创建一个密码。热潮,完了!
但问题在于:在您创建用户名和密码后,我希望它说“#Hello; Hello(此处为用户名)"登录链接最初的位置。我可以使用DOM并将用户名插入到HTML页面中,但是当我提交作为登录功能的表单时,页面将被重新加载并且对DOM的更改将被删除!
所以现在我可以告诉你我想到的解决方案:使表单(登录页面)在新窗口中,因此当提交表单(并操纵DOM)时,将重新加载新窗口,然后关闭将主页DOM的更改保持不变。唯一的问题是我无法弄清楚如何做到这一点。你可能会说这是一个主要问题哈哈哈。
那么,我可以在新窗口中操作父窗口(即调用窗口)DOM吗?
答案 0 :(得分:2)
回答你的回答:你可以在新窗口中使用window.opener.document
来修改调用者窗口的DOM;
window.opener
是对调用者窗口的引用(如果有的话,否则为null
),但仅当两个窗口都来自same domain时)。
注意:这是一个小网页还是你要通过javascript对网站/应用程序进行大量的DOM操作?在后一种情况下,您应该使用javascript库/框架(我建议使用jQuery),以便更轻松地完成脏工作。
答案 1 :(得分:0)
弹出窗口可以找到使用opener
变量打开它的窗口。
如果弹出窗口和原始窗口都来自同一个域,则弹出窗口确实可以修改原始窗口的HTML。
如果弹出窗口和原始窗口包含来自不同域的内容,则由于浏览器实施的跨域保护,他们无法看到彼此的HTML。