我正在尝试访问一个表单及其元素。这个表单在一个iframe中,而访问表单的javascript代码位于主文档内。
如果我需要添加其他信息,请告诉我。
(表单和主页面在同一个域中)
谢谢
我正在尝试访问一个表单及其元素。这个表单在一个iframe中,而访问表单的javascript代码位于主文档内。
如果我需要添加其他信息,请告诉我。
(表单和主页面在同一个域中)
谢谢
var ifr = document.getElementById( yourIframeId );
var ifrDoc = ifr.contentDocument || ifr.contentWindow.document;
var theForm = ifrDoc.getElementById( yourFormId );
或者您可以在框架中编写一些代码,将变量设置为表单的parent
,但我不会信任这种方法。
如果您的iframe带有name
属性,那么它可以用作窗口名称。 如果框架名称是“myframe”:
myframe.document.getElementById("myform") // gives you the form element
我基于我的旧文章制作了一个书签小程序。
(该文章)该小程序在 iframe 中进行读取,将结果 JSON 设置到文本区域并打印到控制台:
javascript:o=document.getElementById("wf_IFid").contentDocument;
f=o.getElementsByTagName("input"), longest=f.length;
frm=f;
values={};
p=0;
for(a=0;a<longest;a++){
el=frm[a];
switch(el.type){
case "checkbox":
values[el.name]=el.checked;
break;
case "radio":
if(el.checked)values[el.name]=el.value;
else if(values[el.name]===undefined)values[el.name]=false;
break;
case "select-one":
values[el.name]=el.selectedIndex<0?-1:el.options[el.selectedIndex].value;
break;
case "select-multiple":
values[el.name]=[];
for(i=0;i<el.options.length;i++){
if(el.options[i].selected)values[el.name].push(el.options[i].value)
}
break;
case "fieldset":
break;
case "button":
break;
case "submit":
break;
case "reset":
break;
case "file":
break;
case undefined:
break;
default:
{
if(el.getAttribute("aria-label")&&el.value){
key=p++ + "|" + el.getAttribute("aria-label");
values[key]=el.value
}
}
}
}
t=o.createElement("textarea");
t.value=JSON.stringify(values, null, 2);
o.body.prepend(t);
console.log(JSON.stringify(values, null, 2));