gpt4 book ai didi

javascript - Android InAppBrowser _system 回调

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:17 27 4
gpt4 key购买 nike

我一直在 Cordova 中开发适用于 Android/IOS/Windows 8 的移动应用程序,它需要将一些字符串传递到网页。对我来说不幸的是,该网页不支持 TLS 1.0 协议(protocol),这意味着旧的 Android 版本(和 IOS 版本)无法在 native 浏览器中打开该页面。

这意味着 window.open 调用,当设置为 '_blank' 时,将不会在 16 API 之前的任何 Android 版本上加载页面,并且只有 19 API 及更高版本才真正保证:

window.open('https://www.libertymountain.com/login.aspx','_blank') 

我的解决方案是将其更改为“_system”而不是“_blank”。这行得通,因为手机可以使用 chrome 或 safari 浏览器而不是 native 浏览器。但是,当我这样做时,所有回调都停止工作。它只是打开页面,我无法在上面运行脚本。

例如,下面的代码永远不会执行回调。它只是打开网页:

var ref = window.open('https://www.libertymountain.com/login.aspx','_system');
ref.addEventListener('loadstart', function() { alert("Hello"); });

我是不是遗漏了什么,或者是否有正确的方法来做到这一点?

编辑:为了清楚起见,这是我从不触发回调的代码:

document.addEventListener("deviceready", init, false);

function init() {
window.open = cordova.InAppBrowser.open;
var ref = window.open('https://www.libertymountain.com/login.aspx', '_system');
// This event never triggers, nor does any other event, even though the
// webpage is opened in Chrome
websiteReference.addEventListener('loadstart', function(event) { console.log('Hello'); });
}

如果我将其更改为此,事件就会触发。但我需要使用“_system”来完成,否则较旧的 Android 和 IOS 设备将无法完成。

document.addEventListener("deviceready", init, false);

function init() {
window.open = cordova.InAppBrowser.open;
// Change '_system' to '_blank'
var ref = window.open('https://www.libertymountain.com/login.aspx', '_blank');
// This event never triggers, nor does any other event, even though the
// webpage is opened in Chrome
websiteReference.addEventListener('loadstart', function(event) { console.log('Hello'); });
}

最佳答案

我听说您实际上无法在外部系统浏览器中执行脚本或触发回调(当为 InAppBrowser window.open() 使用“_system”选项时)。从我的测试来看,这似乎是真的。另一方面,“_blank”当然会触发回调,因为它在应用程序中使用 native 浏览器。

关于javascript - Android InAppBrowser _system 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31420935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com