我正在尝试找到一种方法,可能使用Javascript用数据预填充外部HTML表单/输入吗?我不拥有该表格所在的网站,因此很难办到。有什么办法吗?
答案 0 :(得分:1)
现在,这几乎肯定不会帮助您。但是,出于完整性考虑:与iframe通信的方法有 种,即使它是跨源的:postMessage
API。
它的工作方式很简单。在您的网站上,您可以这样做:
let win = document.getElementById("iframe").contentWindow;
win.postMessage(JSON.stringify({ key: value }));
iframe必须监听postMessage
,如下所示:
document.addEventListener("message", function(e){
console.log("Domain:", e.domain, "sent", e.data);
});
当然,您必须联系iframe
开发人员,并安排他们听您的帖子,此外,您还必须以data
的形式预先填写表格。在许多情况下,这是不现实的。但是有可能。
definition of cross-side(-frame) scripting是访问不位于同一域中的iframe的任何元素。
但是,如果要在同一域上获取页面,则可以很容易地预先填写表格。
父框架可以使用DOM API访问<iframe>
元素。让我们设置常量:
const iframe = document.getElementById('iframeId');
const innerDoc = iframe.contentDocument || iframe.contentWindow.document;
您必须了解要嵌入的页面的结构。假设您执行了此操作,则使用innerDoc
可以访问需要预先填写的字段。
让我们举个例子。假设<iframe>
中的表单看起来像这样
<form>
<label>Some field
<input name="an-input" type="text"/>
</label>
</form>
只需填充input
元素
const input = innerDoc.querySelector("[name='an-input']");
input.value = "Filler text";