【问题标题】:How to refer to the referrer in DOM如何在 DOM 中引用引用者
【发布时间】:2013-03-13 14:51:36
【问题描述】:

我加载了一个页面“A”,并从该页面使用了这样的表单操作,

<form method="post" enctype="multipart/form-data" action="/blah">
     <input id="browse4File" type="file" name="thefile" style="important:relative; width: 300px; top:75px; left:20px; "><br/>
     <input id="la" type="submit" name="SUBMIT" value="UPLOAD"  style="position:relative; font-size:14px; left:300px; top:70px;"/>
</form>
<div id="RetMessage" style="position:relative; left:30px; top:70px; color:#a22; font-size:14px;">This is some comment that needs to disappear</div>

此表单调用另一个页面“B”,但它不会直接使用window.open 打开该页面。我认为它被称为 CGI 请求,而不是 AJAX 请求。 JavaScript 中的“B”页面需要访问“A”页面的内容才能进行修改。我尝试了很多方法来访问它:

document.parent.getElementById('RetMessage').innerHTML
document.referrer...
document.opener...
window.parent...

我没有成功访问引用页面

家里有没有天才可以帮我解决这个问题。在我看来,引用页面没有在 DOM 中链接到被引用页面。有没有其他方法可以实现这一点

救命!

丹尼斯

【问题讨论】:

  • 尝试window.opener,但您可能无法访问所有属性,具体取决于域。
  • @ExplosionPills — 仅当 A 在新窗口中打开 B 时。这并不意味着这里就是这种情况。
  • @Quentin 是的,这就是我发表评论而不是答案的原因
  • @Quentin,我现在明白了。我已经尝试过开瓶器,只是没有在我的问题中列出它。我确实在上面说过我称另一页为“B”,但我误报了。我使用了一个表单操作“/ process”,它使用 python 打开一个新页面。所以DOM链接不存在,因为'A'不是作者。

标签: javascript jquery python html dom


【解决方案1】:

在我看来,引用页面在 DOM 中没有链接到被引用页面

正确。浏览器已离开该页面。它不会继续运行其 DOM 的大量内存副本。

有没有其他方法可以实现这一点

使用XMLHttpRequest 加载该页面的源并对其进行解析。

显然,这将受到限制,因为 DOM 的 JS 操作不会自动运行,并且将适用同源策略。

【讨论】:

  • 我是否明白无论如何我都无法从页面“B”更改现有的“A”页面?
  • 没有现有的A页面。浏览器离开了它(至少,通常情况下,当框架或新窗口正在播放时有时会出现异常)。历史上有一条记录说它以前曾经存在过,但仅此而已。
  • 我知道我需要另一个计划。在这种情况下,我将需要一个返回事件到页面'A',以便处理 python 中留下的结果。有什么想法吗,@Quentin?
  • 感谢您的建议,我相信您向我解释得最好。所以,你的答案满足了这个问题。因此,我不得不找到另一种方法来做到这一点。最好的问候,
【解决方案2】:

你不能,如果一个页面可以访问上一页的DOM,就会有很多安全问题......然后,上一个......然后上一个......

但是,您可以在查询字符串中使用 retMessage 的内容调用页面 B,但请注意最终用户可以修改它。

【讨论】:

  • 会有哪些安全问题(除了已经通过同源策略和其他标准浏览器安全限制解决的问题)?
  • 感谢@Mleblanc 的建议。我看到那里的安全问题。好点...
猜你喜欢
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2017-12-04
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多