如何使用 Javascript 动态加载 iFrame 源代码和自动填充输入表单
How to dynamically load an iFrame source and autofill input forms with Javascript
我需要检索URL参数(我可以成功地做到这一点(,并根据一个参数,决定要填写哪个iframe src,然后使用其他参数自动填写通过表单src创建的表单。 第一个问题是我无法阻止页面进入无限循环。 它正确加载并显示正确的 iframe,但无限循环(加载(需要停止。 其次,我无法让其他参数自动填充输入值。
这是代码。 希望你能帮上忙。 这是代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC- xhtml1-200000126/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!-- Keep your jQuery up to date -->
<script type="text/javascript">
var urlParams;
(window.onpopstate = function () {
var match,
pl = /'+/g, // Regex for replacing addition symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
query = window.location.search.substring(1);
urlParams = {};
while (match = search.exec(query))
urlParams[decode(match[1])] = decode(match[2]);
})();
var test = urlParams["entry"];
var test2 = urlParams["test"];
function iframedirect(){
if (test=="sldk") {
document.getElementById("frame1").src = "http://na-sj09.marketo.com/lp/cochlearsandbox/UpgradeInterest_IFrameLandingPage.html";
var f1 = frames['frame1'].document.forms['mktForm_1108'];
f1.elements['FirstName'].value = test;
}else{
document.getElementById("frame1").src = "http://na-sj09.marketo.com/lp/cochlearsandbox/CAM-UpgradeInterestForm_iFrameLandingPage2ndOption.html";
}
}
</script>
</head>
<body id="bodyId" class="mktEditable" align="center" >
<iframe id="frame1" src="" onload="iframedirect()" height="750px" width="620px" scrolling="no" frameborder="0" marginwidth="0"></iframe>
</body>
</html>
无限循环可能是由函数 iframedirect(( 的结果引起的。它更改 iframe 的 src 并一次又一次地触发 onload 事件。
您可以使用变量来指出 iframe 是否已由 iframedirect(( 加载。
var test = urlParams["entry"];
var test2 = urlParams["test"];
var isLoadedByIFrameDirect = false;
function iframedirect() {
if(!isLoadedByIFrameDirect) {
if (test=="sldk") {
document.getElementById("frame1").src = "url1";
var f1 = frames['frame1'].document.forms['mktForm_1108'];
f1.elements['FirstName'].value = test;
}else{
document.getElementById("frame1").src = "url2";
}
isLoadedByIFrameDirect = true;
}
}
好的,所以问题是我创建了一个 sel-freferencing onload 事件。 坏主意。 为了解决这个问题,我需要从 iframe 元素中删除加载。 我之前尝试过把它放在身体里,但没有运气。 但我可能搞砸了,所以如果您有类似的情况,请不要忽略该选项。 我决定在函数之后立即使用Javascript来做。 如果你是一个新手,Javascript加载和HTML加载之间的区别可以在这里找到
。W3学校上线活动
我仍然没有解决这个问题的"从 url 参数自动填充 iframe 表单"部分。 一旦我想通了,我将对这个答案做一个额外的评论。
无论如何,这是代码
function iframedirect() {
if(!isLoadedByIFrameDirect) {
if (test=="sldk") {
document.getElementById("frame1").src = "http://na- sj09.marketo.com/lp/cochlearsandbox/UpgradeInterest_IFrameLandingPage.html";
var f1 = frames['frame1'].document.forms['mktForm_1108'];
f1.elements['FirstName'].value = test;
}else{
document.getElementById("frame1").src = "http://na-sj09.marketo.com/lp/cochlearsandbox/CAM-UpgradeInterestForm_iFrameLandingPage2ndOption.html";
}
isLoadedByIFrameDirect = true;
}
}
window.onload = iframedirect;
相关文章:
- 从确认框中预填充输入文本框
- 点击填充输入的按钮&提交
- 如何自动填充输入文本框值以与名称相同
- 使用 JSON 数组填充输入字段
- 使用 Jquery 在 SharePoint 2007 上自动填充输入文本
- 如何使用Javascript填充输入文本字段
- IE JavaScript参数和填充输入字段
- 使用其他输入值自动填充输入
- 在表单提交中填充输入字段
- AngularJS-用下拉菜单填充输入文本字段
- 如何使用选中的复选框文本自动填充输入文本字段
- 如果选择'其他'然后填充输入字段
- casperjs根据他的xpath填充输入
- Shiny中未读取的自动填充输入
- Javascript复选框填充输入并将不同的值传递给表单
- 壁虎浏览器不会在加载时填充输入
- 用网址图像填充输入
- 单击用文本填充输入框
- 如何使用 Javascript 动态加载 iFrame 源代码和自动填充输入表单
- 如何用数据库中的值填充输入文本字段 单击复选框