【发布时间】:2016-09-14 18:51:33
【问题描述】:
我一直在努力使用我的应用程序中的 inappbrowser 来调用打开窗口。基本上,我使用 phonegap 作为包装器来加载具有特殊应用程序功能的移动皮肤 CMS 网站。
这里是 index.html。我正在使用 inappbrowser(位置设置为 no)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Emerald Test App</title>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width" />
<script src="phonegap.js"></script>
<script type='text/javascript'>
var ref = null;
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
var url = 'https://my-cms-site.com/content.aspx?page_id=31&org_id=1&app=1';
var target = '_blank';
var options = "location=no"
ref = cordova.InAppBrowser.open(url, target, options);
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
我要做的是在系统浏览器中打开链接 - 从我通过 inappbrowser 加载的外部站点
我尝试使用类似的文档和来自类似帖子的建议下载文件
<script type="text/javascript">
window.open(url, '_system');
</script>
还有 _blank,并添加 'location=no' 等,但没有骰子。这些是从我的远程站点加载的外部页面。
点击这些链接时,它们会在同一个浏览器(inappbrowser 或 webview)中打开并接管浏览器。我要做的是在另一个系统浏览器(chrome、safari 等)中打开它们。这将解决我的下载问题(因为文件有望在系统浏览器中打开,用户可以弄清楚如何处理它们)。
我尝试添加一个事件侦听器,并执行脚本以返回 href 的值。然后将该值用于 window.open(href,'_system');来自 index.html(而不是远程页面)。因为在索引上,我还是会有对inappbrowser的引用。
ref.addEventListener( "loadstop", function() {
ref.executeScript(
{ code: "var gbal = null; $('a').on('click', function() { gbal = $(this).attr('href'); }); (function runIt() { return gbal })();" },
function( values ) {
if (values != null) {
//alert( values[ 0 ] );
window.open(values[0],'_system');
}
}
);
});
}
值[0] 始终为空。这似乎表明我在代码中没有正确执行某些操作:executescript 的一部分 - 或 $(this) 并不是真正的 this
所以,一个大问题 - 我如何在系统浏览器中打开我的外部站点中的链接。 window.open('whatever.htm', '_XXXXX') 在我的远程站点上调用时没有区别。通过使用事件侦听器,我是否走在正确的轨道上?
【问题讨论】:
标签: android jquery cordova phonegap-plugins phonegap-build