我在iframe中有一个带有表单的父页面: https://profiel.pelckmansuitgevers.be/?email=dennis@hybridmedia.be
表格的所有字段均应预先填写。但这不再起作用。
如果将email参数添加到url,则此参数将添加到iframe的源中。
但是在我的iframe上,我无法获取email参数。 我正在iframe中这样做:
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('email')) {
var email = urlParams.get('email');
//all my code here...
}
似乎urlParams为空。
但是,当我以隐身模式(chrome)打开页面并进行硬刷新时,所有字段都被预先填充。因此在这种情况下有效。
有人知道问题出在哪里吗? 也许我的脚本正在尝试接收email参数,但是那时不存在该参数?还是其他?
谢谢!
答案 0 :(得分:0)
您似乎有2个问题:
1)您的iframe位于子域中,并且您不会在iframe网址中发送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
中找到更多方法