我需要在后台用 Greasemonkey 发帖。我尝试动态创建一个 iframe 并发布到它,但它不起作用:
function crossDomainPost() {
// Add the iframe with a unique name
var iframe = document.createElement("iframe");
var uniqueString = "CHANGE_THIS_TO_SOME_UNIQUE_STRING";
document.body.appendChild(iframe);
iframe.style.display = "none";
iframe.contentWindow.name = uniqueString;
// construct a form with hidden inputs, targeting the iframe
var form = document.createElement("form");
form.target = uniqueString;
form.action = "http://INSERT_YOUR_URL_HERE";
form.method = "POST";
// repeat for each parameter
var input = document.createElement("input");
input.type = "hidden";
input.name = "INSERT_YOUR_PARAMETER_NAME_HERE";
input.value = "INSERT_YOUR_PARAMETER_VALUE_HERE";
form.appendChild(input);
document.body.appendChild(form);
form.submit();
}
有人说即使我们发帖,我们也拿不到值(value)观。如果我们不能,只需让用户访问该页面就足够了。它可以在 JS、jQuery、AJAX 帖子中。不仅仅是 form-iframe 技巧。
最佳答案
Greasemonkey 内置了对跨域发帖的支持。您不需要使用 jsonp,也不需要使用 iframe。使用the GM_xmlhttpRequest function .
您无需尝试构建表单并发布它,而是直接发送表单编码的数据:
var formData1 = "1 INSERT_YOUR_PARAMETER_VALUE_HERE";
var formData2 = "2 INSERT_YOUR_PARAMETER_VALUE_HERE";
var formData3 = "3 INSERT_YOUR_PARAMETER_VALUE_HERE";
// etc.
GM_xmlhttpRequest ( {
method: "POST",
url: "http://YOUR_SERVER.COM/YOUR_PATH",
data: "formData1=" + encodeURIComponent (formData1)
+ "&" + "formData2=" + encodeURIComponent (formData2)
+ "&" + "formData3=" + encodeURIComponent (formData3)
// etc.
,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
onload: function (response) {
console.log (response.responseText);
}
} );
关于javascript - 使用 Greasemonkey 进行跨域发帖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275378/