javascript - 无法在 iframe 中传递我的参数
问题描述
我在 iframe 中有一个带有表单的父页面: https ://profiel.pelckmansuitgevers.be/?email=dennis@hybridmedia.be
表格的所有字段都应预先填写。但这不再起作用了。
如果将 email 参数添加到 url,则此参数会添加到 iframe 的源中。
但是在我的 iframe 上,我无法获取电子邮件参数。我在 iframe 中这样做:
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('email')) {
var email = urlParams.get('email');
//all my code here...
}
似乎 urlParams 是空的。
但是当我以隐身模式(chrome)打开页面并进行硬刷新时,所有字段都已预填充。所以它在这种情况下有效。
有谁知道问题是什么?也许我的脚本正在尝试接收电子邮件参数,但那一刻不存在?或者是其他东西?
谢谢!
解决方案
你似乎有两个问题:
1)您的 iframe 在子域中,并且您没有在 iframe url 中发送 email 参数。因此,某些浏览器(例如 Google Chrome)将无法访问该电子邮件。
解决此问题的示例代码:
var loc = window.location.toString(),
params = loc.split('?')[1],
iframe = document.getElementById('updateform');
iframe.src = "https://pelckmans.houston-1.hybridmedia.be/update/pelckmansuitgevers/" + '?' + params + '&v=' + Date.now();
2)JS缓存问题
你可以通过改变来解决这个问题
<script src="js/prefill.js"></script>
和
<script>document.write("<script type='text/javascript' src='js/prefill.js.php?v=" + Date.now() + "'><\/script>");</script>
在您的 iframe 页面中https://pelckmans.houston-1.hybridmedia.be/update/pelckmansuitgevers/
当您开发 JS 并将其包含在 .js 文件中时,经常会发生此问题。
浏览器缓存 js ......解决这个问题的一种方法是,例如在 js 文件名之后添加时间戳,或者像我在代码中所做的那样添加版本号。
您可以在此线程中找到更多执行此操作的方法How to append timestamp to the java script file in <script> tag url to avoid caching
推荐阅读
- php - 检查项目是否已经在购物车中,如果是,则将用户重定向到结帐而不添加产品
- reactjs - SSR 应用程序中的状态管理库有什么用?
- python - 查看文件是否存在的大多数 Pythonic 方式?
- google-cloud-platform - 复制到本地机器时如何排除谷歌云中gcs存储桶中的特定文件夹?
- asp.net-core - Ocelot 网关无法从 docker compose 中的身份服务器获取配置
- java - Netty 中的 channelInactive 和 channe.closeFuture().addListener() 有什么区别
- class - C++ 中不允许不完整类型
- asp.net-mvc - 为什么 ASP.Net 站点在 IE11 中导航到不同页面时会自动注销?
- python - 过滤 Django 查询集
- python - 如何使用 pytesseract 将图像从 url 转换为文本而不节省内存