Ser*_*gej 5 javascript post phonegap-plugins cordova inappbrowser
我正在开发一个cordova 混合应用程序(目前用于android)并使用InAppBrowswer-Plugin。
我想打开一个网页并使用 post 请求登录那里(因为它目前在实际的 Android 应用程序中通过 Java 完成)。
不知何故,这不起作用,我不知道为什么。这是我正在使用的代码:
var ref = cordova.InAppBrowser.open("www.thesite.dummy", "_blank", "location=yes");
var postAsString = 'var xhttp = new XMLHttpRequest();'+
'xhttp.open("POST", "'+url+'", true);'+
'xhttp.onreadystatechange = function() {if (xhttp.readyState == 4 && xhttp.status == 200) {alert("it worked")}};'+
'xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");'+
'xhttp.send("username=dummyUser&password=dummyPW")'
console.log(postAsString);
ref.executeScript({"code":postAsString});
Run Code Online (Sandbox Code Playgroud)
如您所见,我还使用 console.log 我的“postAsString”。如果我复制这个字符串并在 www.thesite.dummy 的控制台中执行它实际上可以工作,但不能在 InAppBrwoser
只是为了帮助通过 Google 找到此问题的任何人,解决方案在该答案中进行了描述,如问题评论中所述。
更改特定上下文的值的代码如下:
var pageContent = '<html><head></head><body><form id="loginForm" action="www.thesite.dummy" method="post">' +
'<input type="hidden" name="username" value="dummyUser">' +
'<input type="hidden" name="password" value="dummyPW">' +
'</form> <script type="text/javascript">document.getElementById("loginForm").submit();</script></body></html>';
var pageContentUrl = 'data:text/html;base64,' + btoa(pageContent);
var browserRef = window.cordova.InAppBrowser.open(
pageContentUrl ,
"_blank",
"hidden=no,location=no,clearsessioncache=yes,clearcache=yes"
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6294 次 |
| 最近记录: |