2

首先,我想说我已经编写 JavaScript 大约 3 个月了,而且我不太关心通过标准或最佳实践来解决这个问题。我主要关心的是学习使用 DOM。我不想使用任何 jQuery,因为我不熟悉它。

我正在尝试使用 JavaScript 和 DOM 在我的页面上创建一个非专业的“登录”功能。首先,我使用的是“登录”屏幕,最初会显示为“隐藏”,然后在使用时显示为“阻止”。当我通过向“登录屏幕”下方的页面主要部分添加较少的不透明度(0.1 不透明度)来在“登录”屏幕后面添加一个变暗的屏幕时,这工作正常并且看起来非常好。

当我关闭“登录”屏幕时,这(不透明度)将恢复正常。所以你可以看到所有的东西都发生在同一个页面中,使用同一个 DOM。好的,这就是我希望它的工作方式:您创建一个用户名,然后您创建一个密码。轰隆隆,完了!

但问题是:创建用户名和密码后,我希望它在登录链接最初所在的位置说“你好(这里的用户名)”。我可以只使用 DOM 并将用户名插入 HTML 页面,但是当我提交作为登录功能的表单时,页面会重新加载并且对 DOM 的更改会被删除!

所以现在我可以告诉你我想到的解决方案:让表单(登录页面)在一个新窗口中,所以当表单被提交(并且 DOM 被操作)时,新窗口被重新加载,然后随后关闭离开主页面 DOM 的更改完好无损。唯一的问题是我无法弄清楚如何做到这一点。你可能会说这是一个主要问题哈哈哈。

那么,我可以从新窗口中操作父窗口(即调用窗口)DOM 吗?

4

2 回答 2

2

回应您的回答:您可以使用window.opener.documentfrom new window 修改调用者窗口的 DOM;

window.opener是对调用者窗口的引用(如果有,否则null),但前提是两个窗口都来自同一个域)。

注意:它是一个小网页还是您要通过 javascript 在网站/应用程序上进行大量 DOM 操作?在后一种情况下,您应该使用 javascript 库/框架(我推荐 jQuery)以便更轻松地完成这项肮脏的工作。

于 2012-12-08T23:37:06.093 回答
0

opener弹出窗口可以使用该变量找到打开它的窗口。

如果弹出窗口和原始窗口都来自同一个域,那么弹出窗口确实可以修改原始窗口的HTML。

如果弹出窗口和原始窗口包含来自不同域的内容,那么由于浏览器实施了跨域保护,它们就无法看到彼此的 HTML。

于 2012-12-08T23:37:53.443 回答