我正在使用Javascript填写维基百科登录页面(“https://en.wikipedia.org/w/index.php?title=Special:UserLogin”)。我目前的代码是:
function crossDomainPost() {
// Add the iframe with a unique name
var iframe = document.createElement("iframe");
var uniqueString = "UniqueiFrameName";
document.body.appendChild(iframe);
//iframe.style.display = "none";
iframe.contentWindow.name = uniqueString;
iframe.height = 400;
iframe.width = 600;
// construct a form with hidden inputs, targeting the iframe
var form = document.createElement("form");
form.target = uniqueString;
form.action = "https://en.wikipedia.org/w/index.php?title=Special:UserLogin";
form.method = "POST";
// parameter: username
var input1 = document.createElement("input");
input1.type = "hidden";
input1.name = "wpName";
input1.value = "MY_USERNAME";
form.appendChild(input1);
// parameter: password
var input2 = document.createElement("input");
input2.type = "password";
input2.name = "wpPassword";
input2.value = "MY_PASSWORD";
form.appendChild(input2);
document.body.appendChild(form);
form.submit();
}
显然,由于同源策略,iframe是空的,除非我使用聪明的Chrome扩展程序。但是,当我启用扩展并允许加载iframe时,将填充用户名字段,但密码字段不会填充。
有谁知道为什么会这样?
提前致谢, SF。
编辑:另外,我知道有一个MediaWiki API,我已经将其用于我的其余代码,但是无法通过JSONP检索所需的“登录令牌”,因此这不是一个选项。