【问题标题】:Titanium: How to redirect from external to internal URL in webviewTitanium:如何在 webview 中从外部 URL 重定向到内部 URL
【发布时间】:2014-02-27 14:21:16
【问题描述】:

所以我知道如何在 Titanium Webview 中访问外部和内部 URL。但我不知道如何从外部 url 重定向到内部 url。

我在根文件夹中有一个名为“index.html”的文件,因此对于 webview 来说应该可以访问它:

Ti.UI.createWebView({
    url: 'index.html'
});

外部网址非常简单

Ti.UI.createWebView({
    url: 'http://www.google.com'
});

但是,当在外部 url 上时,我如何重定向到这个本地文件?这些都不起作用:

 <a href="file://index.html">LOCAL?</a>
 <a href="file:///index.html">LOCAL?</a>

或 javascript 变体

window.location = 'file:///index.html';

关于如何做到这一点的任何线索?

【问题讨论】:

  • 只是想知道如果 webView.evalJS('someFunctionToPrintout(window.location);'); 你会得到什么值当 webView 打开本地文件时 index.html 会给你本地文件的正确路径吗?
  • 我正在获取文件的完整路径,file://Users/username/[..]/index.html

标签: ios redirect webview titanium appcelerator


【解决方案1】:

我最终发现了实现这一目标的两种可能性。但是不能通过重定向来实现。

一:使用webview.evalJS()函数轮询某个变量

var my_data = $.login_webview.evalJS('global.data;');

当然,它只适用于字符串,不适用于对象。因此,如果您要传递 JSON,请确保将其设置为字符串!

二:做一个实际的重定向服务器端,到另一个服务器端页面并监控 URL 变化,然后再做一次evalJS(),但不需要轮询

$.login_webview.addEventListener('load',function(e){
if (e.url.indexOf('mobile/redirect.php') > -1){
    var my_data = $.login_webview.evalJS('global.data');
    }
 });

只需确保通过 2 您实际上是在使用服务器端技术在 Javascript 中设置所需的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2020-06-27
    • 2016-09-09
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多