在带有空白 URL 的新窗口中,您如何提供从中查找相关资源的路径?

Posted

技术标签:

【中文标题】在带有空白 URL 的新窗口中,您如何提供从中查找相关资源的路径?【英文标题】:In a new window with a blank URL, how can you provide a path from which to find relative resources? 【发布时间】:2022-01-15 05:02:38 【问题描述】:

这个问题始于针对具有大量功能的公共网站的 Robot Framework 测试。作为测试生成的数据的一部分,我想捕获屏幕截图。整个报告格式为带有 javascript 数据源的 html。所以 RF 将数据放入 .JS 文件中,HTML 读取它。

图片有问题。他们没有出现在弹出窗口报告中,我不知道为什么。

从 RF 导出的路径是相对的,它们在报告的主页上运行良好,但在弹出窗口中却没有。

问题似乎是“空白”弹出窗口没有可从中搜索资源的 window.location。我什至进行了一个快速实验,显示主窗口(左)的整个路径无法从弹出窗口(右)访问。

感谢关于绝对副相对路径的评论,我更新了 RF 代码以输出绝对路径。现在我的代码达到了我想要的效果,但我还有一个关于空白窗口和路径的问题。

我可以使图像正常工作,但我有样式表和 javascript 文件,我也想参考这些文件。现在,我正在逐行编写所有内容,这似乎有些过分。当然有一种方法可以为新窗口设置路径,该路径可以用作相关资源的起点。

【问题讨论】:

相对 URL 指向哪里?到 about:blank/./theAddress.png?如果您输入固定地址,则显示正常。 @ChrisStricland 很好,这是朝着正确方向迈出的一步。这些文件所在的系统将所有内容放在相对路径中。我想我可以覆盖它并给他们绝对路径。我想我现在的问题是为什么不使用相对路径? @ChrisStricland 我愿意在这一点上认输。我已经调整了 RF 以输出绝对路径,这似乎有效。我将编辑问题以改进和集中注意力。如果您不介意将其写在下面,我想感谢您的答案。 我没有,但让我检查一件事。 检查 元素。我认为这将让您设置新窗口的基本路径,然后您应该能够坚持使用相对路径。这是文档:developer.mozilla.org/en-US/docs/Web/HTML/Element/base。我假设您正在使用 js 将 html 写入新窗口,在这种情况下,您需要创建基本元素,将其附加到头部,然后将 base.href 设置为您需要的基本路径。试试看,让我知道会发生什么。 【参考方案1】:

我看到 img 被赋予了可以使用的相对 URL(应该如此)。我不是 100% 肯定 window.open 的基本 URL 是什么。我不知道它是否是 about:blank,但由于绝对 URL 有效而相对 URL 无效,我认为浏览器不知道指向何处是一个安全的赌注。

所以添加一个元素来明确告诉它指向哪里。这是文档:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

我假设您正在使用 js 将元素写入窗口,因此在这种情况下,您需要创建基本元素,将其附加到头部并将 base.href 设置为您正在使用的基本 url。

我认为你可以通过不使用 window.open(在弹出窗口的糟糕日子里得到一个非常糟糕的说唱)并使用你可以加载(或编写)html 的隐藏模式 div 来为自己省去一些麻烦进入,然后取消隐藏。但是,您可能有完全正当的理由使用弹出窗口。

【讨论】:

非常感谢。 也感谢您对弹出窗口和模式的评论。我有一个不同的问题 (***.com/questions/70100196/…) 试图了解更多有关显示动态内容的首选现代方法的信息。我跟进了您的评论,我认为这些信息会很有帮助。 没问题,很高兴它有帮助。使用新窗口并没有什么问题,但是他们的名声如此糟糕(我猜恶意行为者仍在试图利用它们进行攻击),我认为现在通常会阻止弹出窗口,无论是默认情况还是用户设置。跨度>

以上是关于在带有空白 URL 的新窗口中,您如何提供从中查找相关资源的路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在角度 2 的新选项卡中打开路由 url?

在带有两个控制器的角度材质的新选项卡中打开一个新的html

如何在没有href但使用内容和url属性的新窗口中打开url

使用 Capybara,如何切换到带有“_blank”目标的链接的新窗口?

使用带有 jquery 的谷歌地图地理定位 api(wifi 查找)

电脑桌面图标箭头怎么取消?