javascript - 模拟 window.location 对象
问题描述
我有一个 iFrame,我想在其 src 属性中获取 URL 并获取其内容并使用 docuemnt.write 将其注入 iFrame。所以现在,iFrame 在同一个来源,我可以触摸它的 contentWindow。但是我在使用 window.location 对象的 iFrame 中运行的 JS 文件遇到了一些问题,当然,在我目前的情况下,它是空的(iFrame 没有 src)。所以,代码有一些意想不到的行为:(。我想我有两个选择:
用匿名函数包装 JS 代码,并将我们的“代理”窗口对象传递给它,如下所示:
var windowProxy = { location : { origin : "test", search : "test" } }; (function(window){ console.log(window.location.origin); console.log(window.location.search); })(windowProxy);
那行得通,但我认为这种方法会出现更多错误,因为一切也在函数上下文中执行。因此,如果声明全局变量或类似内容的代码发生更改,那么我认为一切都会搞砸。
- 第二种方法也是最难实现的方法是解析 JS 并将对 window.location 的调用替换为 window.fakelocation(以 fakelocation 作为我们伪造的 window.location 对象)。
我真的很感激一些建议或其他方法。:)
更新:嗯,我刚刚意识到第一种方法是不可能的,因为我必须创建整个窗口对象,这很荒谬。
所以,我现在只剩下第二种方法了。:(
解决方案
推荐阅读
- c# - 更改 .suo 内容 Visual Studio 17 的全局默认值
- django - Django request.user 重定向后成为 AnonymousUser
- reactjs - Reactjs 中的常见问题解答切换
- peoplesoft - 授权错误 - 联系您的安全管理员
- android - 导航期间的速度限制
- android - AAPT:错误:意外元素
在发现 - python - 如何制作自定义状态 discord.py
- reactjs - 教程 nextjs 多个应用程序
- mysql - Mysql查询选择匹配记录加上与匹配记录具有相同cid的记录
- angular - 当我更改工具栏时,Quill 编辑器不会触发(更改)事件