- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在努力调用窗口打开,在我的应用程序中使用 inappbrowser。基本上,我使用 phonegap 作为包装器来加载具有特殊应用程序功能的移动皮肤 CMS 站点。
这是 index.html。我正在使用 inappbrowser(位置设置为否)。
<!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') 在我的远程站点上调用时没有任何区别。使用事件监听器是否走在正确的轨道上?
最佳答案
在这里回答我自己的问题,以便遇到类似情况的任何人都能得到可靠的答案。我从其他帖子、引用资料和文档中将其拼凑在一起。
所以您想在 InAppBrowser 的远程加载站点中打开指向外部浏览器的链接?
在您的远程站点上,您需要将脚本 src 添加到您的 cordova.js 文件、您的 cordova_plugins.js 文件,并包括您的插件文件夹。这些文件必须托管在您的远程站点上。如果我知道它是“应用程序”,我会选择有条件地加载我的。加载 cordova 文件时会发出一系列警报,因此除非您知道它是应用程序,否则您不会想要加载这些文件。
你从哪里得到这些文件?我安装了 Phonegap Desktop 并使用了构建中的文件,但有一些引用错误。我改为使用 Phonegap Build,并从 APK 中提取文件。将 appname.apk 重命名为 appname.apk.zip 并将所需的 js 文件提取/复制到我的服务器。 *平台差异存在一些问题,cordova.js 文件需要针对 iOS/Android 进行更改和有条件地加载。
这些是必需的,因此您可以处理 inappbrowser(在我的“关闭应用程序”要求的情况下 - navigator)。
在我的远程(外部)站点上(在我加载了 cordova/插件之后)我现在可以通过简单调用来关闭应用程序navigator.app.exitApp();
在我在 inappbrowser 中加载的远程(外部)站点的页面中,我现在可以通过执行以下操作在外部页面中打开链接:
<a onclick="loadUrl('http://google.com'); return false;" href="#">Test link, don't click</a>
<script type="text/javascript">
$('.closeapp').click(function() {
navigator.app.exitApp(); //this only works on Android. iOS doesn't allow for programmatic exit
});
function loadUrl(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
}
</script>
我计划使用 jquery 稍微修改 loadURL 函数,以便在单击时处理并查找类。像这样的东西:
$('.downloadable').click(function() {
var url = $(this).attr('href');
navigator.app.loadUrl(url, { openExternal:true });
});
以上仅适用于 Android。尝试 Vanilla window.open(' http://www.whatever.com ', '_system') 不会从我的外部站点在 iOS 中打开外部浏览器。我想过在我的外部站点中使用另一个 ref = cordova.inappbrowser.open() 吗?那是行不通的。有人有什么想法吗?
关于android - Phonegap Build CLI-5.2.0 从 Web App 下载并关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497649/
Example image 如何在 Phonegap 中添加像这张图片这样的 float 气泡通知。 最佳答案 没有您正在寻找的“开箱即用”插件。但是,您可以创建自己的插件或简单地使用 phonega
我正在使用 HTML 和 JS、JQuery Mobile 构建一个应用程序,并使用 PhoneGap Build 进行打包。客户想知道是否可以添加打印功能...有人知道吗?没有 PG Build 打
我已经安装了 Phonegap 使用 $ npm install -g PhoneGap 我也创建了项目。之后我做了 $ PhoneGap build android 它给出了 [phonegap]
我尝试创建 Phonegap 项目,其中需要集成 ASIHTTPRequest 和 JASON 引用, 并出现以下错误 ld: duplicate symbol _SBJSONErrorDomain
我有一个 Phonegap 应用程序,我从早期版本的 Phonegap 开始,我想升级到最新版本。我需要采取哪些步骤来升级它? 我正在寻求一般性答案,但我的具体情况是 Phonegap 1.1.0 -
我已在我的 MAC 电脑(IOS 10.5.8,SDK 3.1.2)上成功安装 PhoneGap。尝试创建一个新的基于 PhoneGap 的应用程序,包含 PhoneGap 框架并将所需的文件复制到
我正在 phonegap 中为三个不同的平台构建一个应用程序:Android、iOS 和 Blackberry。这样做时,我必须检测设备类型,以便我可以在不同平台和不同设备(如 Android Pho
开始在Mac上使用phonegap(Xcode 4,构建iPhone应用程序)我已经阅读了很多有关名为phonegap.plist的文件的内容,包括外部URL的白名单和其他内容。 这是我的问题,我在
所以我有一个运行 Phonegap 1.4.0 的应用程序(不要问),我决定升级到 1.8.1,这样做时 Phonegap 全局变量不再存在,将被替换为实用程序。 所以我转换了每一次出现: var t
我尝试了什么: 我正在开发一个安卓应用程序。在我的应用程序中,我必须打开 -> 向用户显示 Microsoft Office 文档(doc、docx、xls、xlsx、ppt、pptx)内容。为此,我
使用phonegap制作iOS应用时,ChildBrowser插件可以打开一个可以使用phonegap功能的远程页面吗? 例如:在phonegap应用程序中的index.html,调用childbro
我有一个带有 angularjs 的网络应用程序。我想使用 phonegap 将它变成一个移动应用程序 (android)。 我使用了 phonegap 构建:https://build.phoneg
我正在使用 Phonegap build 为每个平台生成可执行文件。每次更改代码时,我都必须在 phonegap build 上上传代码并生成新的 Apk 文件(适用于 android)。我不想在真实
我很生气,这是毫无疑问的,除了明显的可见差异之外,有人报告高度为: $('body').outerHeight(); //1780 与在我的本地 Windows 8 机器上使用 phonegap
我最近使用 phonegap 完成了我的第一个混合应用程序项目。当谈到公开测试时,我有点害怕签名过程。我从这里以及网上的其他地方阅读了许多不同的建议 fragment 来完成这项工作。 以下是如何为
我是 phonegap 的新手,我尝试创建一个简单的 phonegap 应用程序。 使用命令行安装phonegap后:--- 我已经成功创建了项目,但是当我尝试运行 phonegap build io
我正在为 Android 平台制作一个 phonegap 应用程序。在这个应用程序中,我想在多个 html 页面中滑动导航。请告诉我该怎么做。要么在单个 html 页面中完成,要么我必须为此滑动导航创
是否有任何插件可用于 Juce我可以添加哪些库可以同时适用于 IOS 和 android?如果没有,我如何集成 Juce我的电话间隙应用程序中的库? 最佳答案 没有插件。但您可以使用介绍榨汁机来创建不
Phonegap 刚刚推出了一种方法,可以使用以下命令使用本地服务器立即查看您对 phonegap 应用程序的更改: phonegap serve 然后通过下载 PhoneGap Developer
我们对如何集成phonegap插件,然后使用phonegap build构建我们的移动应用程序有一些疑问,这可能吗? 当您使用 Phonegapbuild 构建您的应用程序时,它会为所有受支持的设备构
我是一名优秀的程序员,十分优秀!