使用Cordova/PhoneGap 3.3.0,我使用FileTransfer插件下载文件,然后尝试使用InAppBrowser插件打开它. 我可以成功下载文件,并将其放在临时目录中.由于File插件现在使用URL模式,我无法弄清楚如何将正确的url/path传递给window.openInAppBrowser插件的方法.我也找不到任何相关文件.我能找到的所有"下载和打开"文档都是过时的和pre-URL-schema.
相关链接:
我发现过时的例子:
entry.fullPath,现已弃用,toURL()这是我的代码:
var uri = encodeURI("http://some.url/file.pdf");
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0,
function (fileSystem) {
var fileTransfer = new FileTransfer();
var filename = fileSystem.root.toURL() + uri.substr(uri.lastIndexOf("/") + 1);
fileTransfer.download(uri, filename,
function(entry) { // download success
var path = entry.toURL(); //**THIS IS WHAT I NEED**
window.open(path, "_system");
},
function(error) {} // irrelevant download error
);
},
function(error) {} // irrelevant request fileSystem …Run Code Online (Sandbox Code Playgroud) 显然,在Android上使用_blank时,InAppBrowser不会存储当前会话cookie.为了实现这一目标,我是否缺少一些设置?它似乎在IOS上完美运行,并且在排除故障方面有点令人沮丧.当oAuth发生回调并且我的服务器读取并为当前会话分配所需数据时,cookie需要存在.
我试过的......
1)将CookieManager添加到android Childbrowser(旧的,我知道)
2)target = _self实际上会将cookie发送到服务器,但是打开的弹出窗口会在验证后关闭整个应用程序(而不是弹出窗口),必须手动重新打开
3)更改各种WebView属性和设置无济于事.
我有一个Cordova应用程序,它是一个带有单个HTML文件的单页面应用程序.
所有链接都应在系统浏览器中打开.我不想要"嵌入式"InAppBrowser,但实际上是原生系统/外部浏览器.
我们可以在任何地方找到使用InAppBrowser的代码示例:
window.open('http://apache.org', '_system');
Run Code Online (Sandbox Code Playgroud)
但是,为什么我们需要安装InAppBrowser,即使我们甚至不打算使用嵌入式浏览器?
关于链接的目标,有人真的可以实现WebView的行为吗?目前尚不清楚它应该用a target=_blank做什么,但除了打开一个新的浏览器窗口之外我什么都看不到.
请注意,问题似乎只出现在iOS上,因为使用Android(使用Crosswalk插件)target=_blank似乎始终可以正常工作并在新的本机浏览器窗口中打开.
我有一个非常有趣的问题.我在我的一个Android应用程序中使用inAppBrowser和spinner.Spinner实现了ProgressDialog.这里的问题是,当我尝试通过inAppBrowser打开一个网页时,加载微调器开始加载一旦页面开始加载,然后一旦它完成加载页面就关闭,当我点击该页面的输入字段并尝试键入字母或数字,它只是停留在所谓的"锁定"状态.如果我输入的东西我看不到它们,光标就会一直闪烁.
为了使这更奇怪,我能够输入特殊字符.如果我点击页面周围的任何其他位置,然后再次点击相同的输入字段,然后它可以工作.它工作的另一种情况是当我将应用程序置于Pause状态然后恢复它时,输入字段起作用.
仅在5.0.1及更早版本的Android平台中会出现此问题.
可以在InAppBrowser java文件的 Github中找到inAppBrowser java文件.
我的微调器实现如下:
spinner = new ProgressDialog(cordova.getActivity());
spinner.setIndeterminate(false);
spinner.setProgressStyle(ProgressDialog.STYLE_SPINNER);
spinner.setCancelable(false);
spinner.setMessage(cordova.getActivity().getText(R.string.spinner_loading));
spinner.setTitle("");
Run Code Online (Sandbox Code Playgroud)
我用以下方式显示/隐藏一个微调器:
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//InAppBrowser default code....
try {
JSONObject obj = new JSONObject();
obj.put("type", LOAD_START_EVENT);
obj.put("url", newloc);
sendUpdate(obj, true);
} catch (JSONException ex) {
Log.d(LOG_TAG, "Should never happen");
}
spinner.show();
}
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
try {
JSONObject obj = new JSONObject(); …Run Code Online (Sandbox Code Playgroud) 我想在InAppBrowser或childbrowser中打开一个外部页面,在那里我没有显示任何工具栏,我可以在我的外部页面中有一个关闭浏览器并从我打开浏览器的地方返回应用程序的按钮.那么当你没有DONE按钮时如何关闭?我已经看到如果我有var ref = window.open(encodeURI(url),'_ self','location = yes'); 然后可以用ref.close()关闭浏览器; 但是,如果我在我打开的外部页面中使用它不起作用,它是不是关闭浏览器?
如果我在配置文件中将方向设置为纵向,有没有办法自动旋转其中任何一个?我知道如果您手动执行,可以自动旋转子浏览器,而不是通过构建服务.或者我必须将方向设置为两者?
我已经测试了打开ChildBrowser和InAppBrowser的所有不同方法,我真的看不出它们之间有什么大的区别?InAppBrowser可以使用本机功能而不能使用ChildBrowser或者?
我有一个PhoneGap应用程序,它使用InAppBrowser加载Google登录体验.因此,我需要一个事件监听器来检测浏览器何时更改位置.以下设置在除4.4.2之外的所有Android版本上都能正常工作,我能说得最清楚; 事件监听器触发,一切都很好.
但是,在Android 4.4.2上,我似乎无法为窗口启动任何事件监听器; loadstart,onload,onscroll等.似乎什么都没发生.遗憾的是,无法在Google或StackOverflow上找到任何解决方案.
不确定需要/有用的其他信息,但很高兴提供任何东西.
var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no');
auth_window.addEventListener('loadstart', function(event) {
alert("blah")
})
Run Code Online (Sandbox Code Playgroud)
-
******更新
我已经能够通过退出InAppBrowser并再次打开来启动监听器.我不知道为什么它会在这种情况下起作用,但不是这样.这里的任何帮助将非常感谢.
我有一个需要打印能力的网络应用程序.Facebook的应用内Chrome实现不允许打印.目前,我正在向用户提供有关如何打开chrome本身的说明,而不是我给普通用户打印的按钮.但我希望只是在他们到达该页面时为他们打开Chrome,或者至少提供一个按钮/链接,可以在Chrome中打开该页面而不是强制他们找到设置按钮并找出如何打开Chrome自己.
我尝试使用googlechrome://myurl.com方法,Chrome打开,但指定的网址没有加载.
我查看了Google的Intent选项,但我无法弄清楚如何使用该方法打开Chrome.
有没有办法在javascript中实现这一点?或者通过href属性中的某个url方案?
到目前为止,我发现的所有其他答案都解释了如何从Android应用程序执行此操作,而不是从网站进行解释.
**更新:googlechrome://myurl.com似乎在原生Facebook应用程序中从iOS正常工作.使用Android中的原生Facebook应用程序似乎无法正常工作.
阅读appovabrowser中的cordova文档,我找不到隐藏“位置工具栏”的方法(总是并且当它具有“ location = yes”时),并且仅对于Android,因为我们可以在IO上使用“ toolbar = no”。
为什么需要活动的“位置=是”?您可以输入“ no”,它不再出现。
当我在此线程中评论时,我需要激活的选项才能使用离子本机IAB的功能
我使用的选项:
location=yes,
EnableViewPortScale=yes,
hidenavigationbuttons=yes,
enableViewportScale=yes,
hideurlbar=yes,
zoom=no,
mediaPlaybackRequiresUserAction=yes,
Run Code Online (Sandbox Code Playgroud)
正如我们在图像中看到的,工具栏仍显示在顶部。
有没有被忽视的选择?是否可以使用CSS删除它,如果有,它是否可以调用任何类或ID,还是应该用纯代码触摸它?
我使用cordova作为我的应用程序并使用inAppBrowser插件,在使用此插件cordova build android --release命令之前工作正常但添加此插件后它显示错误,如果我没有给--release它正常工作意味着在调试模式下没有问题.我得到的错误如下
/Users/mukesh/Documents/code/teamworkCordova/xyz/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:555: Error: Expected resource of type id [ResourceType]
actionButtonContainer.setId(1);
~
/Users/mukesh/Documents/code/teamworkCordova/xyz/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:563: Error: Expected resource of type id [ResourceType]
back.setId(2);
~
/Users/mukesh/Documents/code/teamworkCordova/xyz/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:587: Error: Expected resource of type id [ResourceType]
forward.setId(3);
~
/Users/mukesh/Documents/code/teamworkCordova/xyz/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:610: Error: Expected resource of type id [ResourceType]
edittext.setId(4);
~
/Users/mukesh/Documents/code/teamworkCordova/xyz/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:633: Error: Expected resource of type id [ResourceType]
close.setId(5);
~
/Users/mukesh/Documents/code/teamworkCordova/xyz/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java:679: Error: Expected resource of type id [ResourceType]
inAppWebView.setId(6);
~
Explanation for issues of type "ResourceType":
Ensures that resource id's passed to …Run Code Online (Sandbox Code Playgroud) inappbrowser ×10
cordova ×7
android ×4
javascript ×2
angularjs ×1
childbrowser ×1
cookies ×1
flutter ×1
ionic ×1
java ×1
spinner ×1
webview ×1